就应用而言,BufferedStream和MemoryStream有什么区别? 由于MemoryStream可以随时刷新到文件中,它能否取代BufferedStream呢?
就应用而言,BufferedStream和MemoryStream有什么区别? 由于MemoryStream可以随时刷新到文件中,它能否取代BufferedStream呢?
BufferedStream
是现有流的缓冲区。MemoryStream
是整个流的缓冲区,它没有链接到其他流。您可以随时要求将其写入另一个流中,但这并不相同。
缓冲区的主要原因之一是避免频繁地写入昂贵的资源。但这并不意味着您希望将所有数据都缓冲在内存中 - 只需要足够避免非常小的写入即可。例如,如果FileStream
没有自己的缓冲策略,那么在使用BufferedStream
包装它时,即使您写入了数兆字节的数据,缓冲区也可能是只有8K的。但正如评论中指出的那样, FileStream
已具备足够的缓冲,与其同时使用BufferedStream
是没有意义的。
BufferedStream
必须由其他现有的流进行初始化。简单的关闭会触发将缓冲区刷新到底层流中。当使用非内存流但需要(自动)缓冲时,这是必需的。
MemoryStream
可以独立存在,但也可以像您所说的那样被'显式地'刷新到其他流中。
如果您的工作仅在内存中进行,则最好使用MemoryStream。否则,请使用BufferedStream。