93

问题:

.NetFileStreamStreamWriterin有什么不同?

你应该在什么上下文中使用它?他们的优势和劣势是什么?

有没有可能将这两者合二为一?

4

6 回答 6

106

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

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

AStreamWriter : TextWriter是一个流装饰器。TextWriter 将原始类型(如 string、int 和 char)编码为byte[],然后将 hat 写入链接的 Stream。

你应该在什么上下文中使用它?他们的优势和劣势是什么?

byte[]数据时使用裸 FileStream。StreamWriter当你想写文本时添加一个。使用 Formatter 或 Serializer 写入更复杂的数据。

有没有可能将这两者合二为一?

是的。你总是需要一个 Stream 来创建一个 StreamWriter。辅助方法System.IO.File.CreateText("path")将组合创建它们,然后您只需 Dispose() 外部编写器。

于 2011-02-10T23:26:13.110 回答
21

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

于 2011-02-10T22:55:59.517 回答
15

FileStream 明确用于工作文件。

StreamWriter 可用于流式传输到任何类型的Stream - 网络套接字、文件等。

ScottGu 在这里很好地解释了不同的 Stream 对象:http: //www.codeguru.com/Csharp/Csharp/cs_data/streaming/article.php/c4223

于 2011-02-10T22:56:31.917 回答
8

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

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

AStreamWriter是 Stream 的包装器,它简化了使用该流输出纯文本的过程。它公开了接受字符串而不是字节的方法,并执行与字节数组的必要转换。还有其他作家;您将使用的另一个主要功能是XmlTextWriter,它有助于以XML格式编写数据。也有对应于 Writer 的 Reader,它们类似地包装 Stream 并便于将数据取回。

于 2011-02-11T00:25:31.823 回答
7

好吧,来自 MSDN FileStream

围绕文件公开 Stream,支持同步和异步读写操作。

和 MSDN StreamWriter

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

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

StreamWriter页面继续添加:

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

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

于 2011-02-10T22:58:59.117 回答
2

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

于 2017-11-17T19:42:08.497 回答