I have this code snippet in my application and I am quite sure that I have 
closed all the streams.

But, surprisingly, I keep getting:
A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
java.lang.Throwable: Explicit termination method 'close' not called

Any pointers would be very useful.

```
if (fd != null) {
    InputStream fileStream = new FileInputStream(fd.getFileDescriptor());
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    byte[] buf = new byte[1024];
    try {
        for (int readNum; (readNum = fileStream.read(buf)) != -1;) {
            bos.write(buf, 0, readNum);
        }
        content = bos.toByteArray();
    } catch (IOException ex) {
        ex.printStackTrace();
    } finally {
        try {

            if (fileStream != null) {
                fileStream.close();
            }

            if (bos != null) {
                bos.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

```