关于c#:FileStream vs /差异StreamWriter?

FileStream vs/differences StreamWriter?

题:

.Net中的FileStreamStreamWriter有什么区别?

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

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


What is different between FileStream and StreamWriter in dotnet?

FileStreamStream。像所有流一样,它仅处理byte[]数据。

StreamWriter : TextWriter是流装饰器。 TextWriter将文本数据(例如字符串或char)编码为byte[],然后将其写入链接的Stream

What context are you supposed to use it? What is their advantage and disadvantage?

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

Is it possible to combine these two into one?

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


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


FileStream明确用于工作文件。

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

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


好吧,从MSDN for FileStream

Exposes a Stream around a file, supporting both synchronous and asynchronous read and write operations.

StreamWriter的MSDN:

Implements a TextWriter for writing characters to a stream in a particular encoding.

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

StreamWriter页面继续添加:

StreamWriter is designed for character output in a particular encoding, whereas classes derived from Stream are designed for byte input and output.

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


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

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

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


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