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

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

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

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

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

MemoryStream可以单独存在,但也可以像你说的那样刷新到其他流,但是“明确地”。

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