BufferedStream和MemoryStream在应用程序方面有什么区别?
BufferedStream和MemoryStream在应用程序方面有什么区别? 由于MemoryStream可以随时刷新到文件中,难道它无法取代BufferedStream吗?
BufferedStream
只是现有流的缓冲区。 MemoryStream
是整个流的缓冲区 – 它不会链接到另一个流。 您可以随时要求它将自己写入另一个流,但这不是一回事。
缓冲的一个主要原因是避免频繁写入昂贵的资源。 但是,这并不意味着您想要缓冲内存中的所有数据 – 这足以避免非常小的写入。 例如,如果FileStream
没有自己的缓冲策略,那么即使你写了数兆字节的数据,将它包装在BufferedStream
也可能最终只有8K的缓冲区。 正如评论中指出的那样, FileStream
有足够的缓冲,使用BufferedStream
与它一起使用是没有意义的 。
BufferedStream
必须由其他一些现有的Stream初始化。 一个简单的关闭触发缓冲区刷新到底层流。 使用非内存流但需要(自动)缓冲时需要它。
MemoryStream
可以单独存在,但也可以像你说的那样刷新到其他流,但是“明确地”。
如果你的工作只是在内存上,那么最好使用MemoryStream。 否则,BufferedStream。