在应用方面,BufferedStream和MemoryStream有什么不同?既然MemoryStream可以随时刷新到文件中,那么它就不能取代BufferedStream吗?
发布于 2009-09-17 16:09:25
BufferedStream只是现有流上的一个缓冲区。MemoryStream是整个流的缓冲区-它不会链接到另一个流。您可以要求它在任何时候将自身写入另一个流,但这不是一回事。
缓冲的主要原因之一是避免频繁地写入昂贵的资源。然而,这并不意味着您想要缓冲内存中的所有数据-只是足够避免非常小的写操作。例如,如果FileStream没有自己的缓冲策略,那么在BufferedStream中包装它可能最终只有8K的缓冲区,即使您写入兆字节的数据。正如评论中指出的那样,FileStream has enough buffering that using BufferedStream in conjunction with it is pointless。
发布于 2009-09-17 16:18:21
BufferedStream必须由其他现有的流进行初始化。简单的close会触发将缓冲区刷新到底层流。在处理非内存流时需要它,但您需要(自动)-buffering。
MemoryStream可以独立存在,但也可以像您所说的那样“显式地”刷新到其他流中。
如果您的工作只在内存上进行,则最好使用MemoryStream。否则,返回BufferedStream。
https://stackoverflow.com/questions/1439798
复制相似问题