I\'m writing an application that creates a \"Catalog\" of files, which can be attributed with other meta data files such as attachments and thumbnails.
I\'m trying to ab
My Rules:
Should the consumer of a stream close it
If I return a stream from a method, the consumer is responsible. I'm giving it to you, It's your responsilibity.
If I accept a stream as a parameter in a method, I don't close it. When exiting the method, I don't know if the calling method still needs it. It's your stream, I'm just borrowing it, and I don't want to mess you up.
If I create a stream and pass it to another method, my method closes it (or tries to) when I am done with it. I don't know what you are going to do with it, but it's my stream, so I am responsible for it.
My spontaneous thought in this case is that the consumer should hold the responsibility for closing the streams. An IFileSystemAdaptor
can't know when the consumer is done using the stream, so it also can't decide when to close it.
In effect the last object to use the stream should be responsible for closing it, and that is generally the caller.
Enjoy!