FileStream与/差异StreamWriter?

Wha*_*sUP 81 c# filestream streamwriter

题:

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

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

是否可以将这两者合二为一?

Hen*_*man 96

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

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

A StreamWriter : TextWriter,是一个Stream-decorator.TextWriter将文本数据(如string或char)编码为byte[],然后将其写入链接Stream.

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

byte[]数据时使用裸FileStream .您StreamWriter想要写文本时添加一个.使用Formatter或Serializer编写更复杂的数据.

是否可以将这两者合二为一?

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

  • 同样重要的是要注意`FileStream`是一种流,专门针对文件定制.Streams本身使用字节,但是`StreamWriter`/Reader将在*any*stream上写入/读取文本,而不仅仅是`FileStream.例如,`MemoryStreams`,`NetworkStreams`等. (4认同)

Han*_*ant 19

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

  • 实际上,这不是"全部"......但这是一个正确的区别. (12认同)

Dav*_*vid 14

FileStream明确用于工作文件.

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

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

  • 尽管它不涵盖随机访问 R/W 流,但它是流的绝佳参考。尤其是序列化/反序列化信息以及非文件流的演示非常有用。+1 (2认同)

Chr*_*isF 7

那么,从MSDN FileStream:

在文件周围显示Stream,支持同步和异步读写操作.

和MSDN StreamWriter:

实现TextWriter,以便以特定编码将字符写入流中.

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

StreamWriter页面继续添加:

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

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


Kei*_*thS 5

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

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

StreamWriter是Stream的包装器,它简化了使用该流输出纯文本的过程.它公开了接受字符串而不是字节的方法,并对字节数组执行必要的转换.还有其他作家; 您使用的另一个主要是XmlTextWriter,它有助于以XML格式编写数据.还有一些与Writer相对应的编写者,它们同样包装了一个Stream并便于将数据恢复出来.


bea*_*nmf 5

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