BufferedStream和MemoryStream在应用程序方面有什么区别?

dev*_*ull 22 c#

BufferedStream和MemoryStream在应用程序方面有什么区别?由于MemoryStream可以随时刷新到文件中,难道它无法取代BufferedStream吗?

Jon*_*eet 35

BufferedStream只是现有流的缓冲区.MemoryStream整个流的缓冲区- 它不链接到另一个流.您可以随时要求它将自己写入另一个流,但这不是一回事.

缓冲的一个主要原因是避免频繁写入昂贵的资源.但是,这并不意味着您希望缓冲内存中的所有数据 - 这足以避免非常小的写入.例如,如果FileStream没有自己的缓冲策略,那么BufferedStream即使你写入数兆字节的数据,包装它也可能最终只有8K的缓冲区.正如评论中所指出的那样,FileStream有足够的缓冲BufferedStream与其结合使用是毫无意义的.

  • 将BufferedStream和FileStream结合使用没有任何好处.见http://blogs.msdn.com/b/brada/archive/2004/04/15/114329.aspx.从我的实验看,IsolatedStorageFileStream不包含任何缓冲(至少在Windows Phone 7上的Silverlight上),因此可能从BufferedStream中获益.不幸的是,Silverlight没有BufferedStream实现. (2认同)

man*_*nji 7

BufferedStream必须由其他一些现有的Stream初始化.一个简单的关闭触发缓冲区刷新到底层流.使用非内存流但需要(自动)缓冲时需要它.

MemoryStream 可以单独存在,但也可以像你所说的那样"明确地"刷新到其他流.

如果你的工作只是在内存上,最好使用MemoryStream.否则,BufferedStream.