Will this closes bin also ?
The enclosed stream can't close the enclosing stream because it doesn't know about it.
If not, is there any need to do so? ie : will it cause a memory leak ?
It will not cause a memory leak because the resources are allocated / held by the enclosed stream and are freed properly when it is closed, but the enclosing stream may implement buffering and other translation logic which if not flushed or closed, the data actually written to the enclosed stream might be incomplete/corrupt.
So it is always recommended to flush the enclosing stream (preferred would be to close that, but if you can't, the minimum you should do is flush it).
Flushing the enclosing stream is not always enough because for the underlying stream to contain valid data, the enclosing stream might add additional padding or formatting. An example for this is ZipOutputStream which in order to provide a valid zip file (zip format), it provides the ZipOutputStream.finish() method which besides flushing also writes additional zip-file related data (and does not close the underlying stream).
You might find this useful:
Close Encapsulating Writers/Streams for ServletOutputStream