Jad*_*ias 30 .net c# stream binarywriter
我有一个方法接收使用BinaryWriter在其上写入的Stream.但是当我处理这个BinaryWriter时,它也会关闭流.我可以不妥协地把它留下来让我可以打开我的小溪吗?
Dav*_*nde 55
从.NET 4.5开始,BinaryWriter类有一个新的构造函数,它接受一个布尔参数来指示是否打开流.
参考:http://msdn.microsoft.com/en-us/library/gg712841.aspx
public BinaryWriter(
Stream output,
Encoding encoding,
bool leaveOpen
)
Run Code Online (Sandbox Code Playgroud)
Mar*_*ell 21
在这种情况下BinaryWriter,这不是一个直接选项(虽然一些流包装器允许您控制它,例如GZipStream等).
Jon在MiscUtil中有一个NonClosingStreamWrapper 应该可以工作:你将你的流包装在非关闭包装器中,然后给它包装BinaryWriter.这基本上是通过除Close()和之外的一切Dispose().
只是不要调用Dispose,而是使用Flush,它的安全.
受保护的BinaryWriter.Dispose(bool)方法是虚拟的,它所做的就是关闭流(您可以在Reflector中检查它是否为真). - 这个方法由Dispose()方法调用.
你可以简单地从BinaryWriter继承一个类,并覆盖Dispose(bool)方法,什么也不做,或者别的什么.