BufferedStream和MemoryStream在应用程序方面有什么区别? 由于MemoryStream可以随时刷新到文件中,不能替换BufferedStream吗?
答案 0 :(得分:32)
BufferedStream
只是现有流的缓冲区。 MemoryStream
是整个流的缓冲区 - 它不链接到另一个。您可以随时要求它将自己写入另一个流,但这不是一回事。
缓冲的一个主要原因是避免频繁写入昂贵的资源。但是,这并不意味着您希望将所有数据缓冲在内存中 - 这足以避免非常小的写入。例如,如果FileStream
没有自己的缓冲策略,那么将其包装在BufferedStream
中可能会导致只有8K的缓冲区,即使您写入数兆字节的数据。正如评论中指出的那样,FileStream
has enough buffering that using BufferedStream
in conjunction with it is pointless。
答案 1 :(得分:5)
BufferedStream
必须由其他现有Stream初始化。一个简单的关闭触发缓冲区刷新到底层流。使用非内存流但需要(自动)缓冲时需要它。
MemoryStream
可以单独存在,但也可以像你所说的那样“明确地”刷新到其他流。
如果你的工作只是在内存上,最好使用MemoryStream。否则,BufferedStream。