FileStream 与 StreamReader 和 StreamWriter - 有什么区别?

Avi*_*aro 1 c# file filestream streamwriter streamreader

当处理无法通过 完成的文件时StreamReader,通过 允许哪些功能,反之亦然?我检查了文档,它们都有读/写选项,包括更高级的选项。那么我什么时候应该使用它们呢?StreamWriterFileStream

Joh*_*ica 8

FileStreamStream是处理本地文件的最低级别对象。因此,它以二进制(字节)方式处理文件。您可以读取这么多字节,或者写入这么多字节。

\n

在处理文本时,我们必须考虑文本编码。针对具有不同字符集的不同文化创建了许多文本编码。目前最常见的是 UTF8(unicode 的一种形式)。文本编码是我们告诉计算机将文本表示为字节的方式。使用 UTF8,字母“A”将由单个字节表示,但日语平假名“\xe3\x81\x82”将由 3 个字节表示。编码使我们能够正确地读写文本。您可以在此处阅读更多相关信息(以防链接中断:WaybackMachine 链接)。

\n

StreamReaderStreamWriter围绕阅读文本而构建的,因此它们为我们处理编码。一是用于阅读,二是用于写作。如果您实例化StreamReaderStreamWriter使用接受文件名的构造函数,它实际上会FileStream在内部使用。

\n

StreamReader为我们提供了以下方法:

\n
    \n
  • ReadLine- 从文件中读取,直到找到回车符 + 换行符 ( \\r\\n) 或仅找到换行符 ( \\n),指示单行文本的结尾,然后返回string.
  • \n
  • ReadToEnd- 将整个文件内容读取到string.
  • \n
\n

StreamWriter为我们提供了以下方法:

\n
    \n
  • Write- 它可以将单个字符或整个字符串写入文件,但不会终止该行。
  • \n
  • WriteLine其作用与 相同Write,但它也会结束该行,因此任何后续写入都会转到文件中的下一行。
  • \n
\n

相反,FileStream只有像Read和 之类的方法Write,它们使用字节。

\n

  • 非常好的信息丰富的答案,谢谢。 (2认同)

小智 6

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

A StreamWriter:TextWriter,是一个流装饰器。TextWriter 将字符串或字符等文本数据编码为 byte[],然后将其写入链接的 Stream。

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

作者:亨克