繁体   English   中英

FileStream 与/差异 StreamWriter?

[英]FileStream vs/differences StreamWriter?

问题:

.Net 中的FileStreamStreamWriter什么不同?

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

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

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

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

A StreamWriter : TextWriter是一个流装饰器。 TextWriter 将诸如 string 或 char 之类的文本数据编码为byte[] ,然后将其写入链接的Stream

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

当您有byte[]数据时,您可以使用裸 FileStream。 当您想编写文本时,您可以添加一个StreamWriter 使用格式化程序或序列化程序写入更复杂的数据。

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

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

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

FileStream 明确用于工作文件。

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

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

好吧,来自FileStream的 MSDN :

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

StreamWriter的 MSDN :

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

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

StreamWriter页面继续添加:

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM