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

时间:2009-09-17 16:06:12

标签: c#

BufferedStream和MemoryStream在应用程序方面有什么区别? 由于MemoryStream可以随时刷新到文件中,不能替换BufferedStream吗?

2 个答案:

答案 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。