FileStream与/差异StreamWriter?


85

题:

什么是之间的不同FileStream,并StreamWriter

您应该使用什么上下文?它们的优缺点是什么?

可以将这两者合二为一吗?

Answers:


98

dotnet中的FileStream和StreamWriter有什么区别?

AFileStream是一个Stream。像所有流一样,它仅处理byte[]数据。

AStreamWriter : TextWriter是流装饰器。TextWriter将诸如string或char之类的Text数据编码到byte[]然后将其写入链接的中Stream

您应该使用什么上下文?它们的优缺点是什么?

byte[]数据时,使用裸FileStream 。StreamWriter当您要编写文本时添加一个。使用格式化程序或串行器写入更复杂的数据。

可以将这两者合二为一吗?

是。您始终需要一个Stream才能创建StreamWriter。helper方法System.IO.File.CreateText("path")将组合创建它们,然后您只需要Dispose()外作者即可。


4
同样重要的是要注意,这FileStream是一种流,专门针对文件量身定制。流在本机上使用字节,但是StreamWriter/ Reader将在任何流上写/读文本,而不仅仅是FileStreams。例如,MemoryStreamsNetworkStreams等。
iliketocode

19

FileStream写入字节,StreamWriter写入文本。就这样。


14
实际上,这不是“全部”……但这是一个正确的区别。
大卫,


7

好吧,从MSDN获得FileStream

在文件周围公开Stream,同时支持同步和异步读取和写入操作。

和MSDN用于StreamWriter

实现一个TextWriter,用于以特定编码将字符写入流中。

最明显的区别是FileStream允许读/写操作,而StreamWriter只写。

StreamWriter页面继续添加:

StreamWriter设计用于特定编码的字符输出,而从Stream派生的类设计用于字节输入和输出。

所以第二个区别是FileStream字节,而StreamWriter文本。


6

它们是用于将信息输出到已知数据源的两个不同级别。

AFileStream是一种类型的Stream,从概念上讲是一种指向某个位置并可以处理往返于该位置的传入和/或传出数据的机制。存在用于读取/写入文件,网络连接,内存,管道,控制台,调试和跟踪侦听器以及其他几种类型的数据源的流。具体来说,FileStream存在一个执行对文件系统的读取和写入的操作。大多数流的用法很底层,并且以字节为单位处理数据。

AStreamWriter是Stream的包装,可简化使用该流输出纯文本的过程。它公开了采用字符串而不是字节的方法,并执行往返于字节数组的必要转换。还有其他作家。您要使用的另一个主要对象是XmlTextWriter,它有助于以XML格式编写数据。还有与Writers相对应的Reader读者,它们以类似的方式包装Stream并有助于取回数据。


0

一个关键的区别(除了上面的注释之外)可能是FileStream支持对任何指定的FileStream.Position进行随机磁盘访问的读取和写入。对于大文件修改,这是无价的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.