FileStream vs /差别StreamWriter?

题:

在dotnet中FileStream和StreamWriter有什么不同?

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

有可能把这两个结合起来吗?

在dotnet中FileStream和StreamWriter有什么不同?

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

StreamWriter是一个TextWriter ,一个Stream-decorator。 TextWriter将文本数据(如string或字符)转换或编码为byte[] ,然后将其写入链接的Stream

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

当你有byte[]数据时,你使用一个纯粹的FileStream。 当你想写文本的时候添加一个StreamWriter

有可能把这两个结合起来吗?

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

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

FileStream明确地用于工作文件。

StreamWriter可以用来stream式传输任何types的stream – networking套接字,文件等

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

那么,从FileStream的MSDN:

在文件周围公开一个Stream,同时支持同步和asynchronous读写操作。

StreamWriter的MSDN:

实现一个TextWriter,以特定的编码将字符写入stream中。

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

StreamWriter页面继续添加:

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

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

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

FileStream是Stream的一种types,它在概念上是一种指向某个位置的机制,可以处理来往于该位置的传入和/或传出数据。 存在用于读取/写入文件,networking连接,内存,pipe道,控制台,debugging和跟踪监听器以及一些其他types的数据源的stream。 具体来说,存在一个FileStream来执行读取和写入文件系统。 大多数数据stream在使用时都是相当低级的,并且将数据作为字节进行处理。

StreamWriter是Stream的包装器,可以简化使用该stream输出纯文本。 它公开的方法是使用string而不是字节,并执行字节数组和字节数组之间的必要转换。 还有其他的作家; 另一个主要使用的是XmlTextWriter,它便于以XML格式写入数据。 也有读者对应的作家,类似地包装一个stream和方便获取数据。

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