如何解决FileStream 与 StreamReader 和 StreamWriter - 有什么区别?
在处理无法通过 StreamReader
完成的文件时,通过 StreamWriter
和 FileStream
允许哪些功能,反之亦然?我检查了文档,它们都有读/写选项,包括更高级的选项。那么我应该什么时候使用其中的每一个?
解决方法
FileStream
是一个流。像所有 Streams 一样,它只处理 byte[] 数据。
A StreamWriter
: TextWriter,是一个流装饰器。 TextWriter 将字符串或字符等文本数据编码为 byte[],然后将其写入链接的 Stream。
当您有 byte[] 数据时,您使用裸 FileStream
。当您想编写文本时,您可以添加 StreamWriter
。使用格式化程序或序列化程序写入更复杂的数据。
作者:Henk
,FileStream
是用于处理本地文件的最低级 Stream
对象。因此,它以二进制(字节)的形式处理文件。你可以读这么多字节,也可以写这么多字节。
在处理文本时,我们必须考虑文本编码。有许多文本编码是为具有不同字符集的不同文化创建的。现在常见的是 UTF8(一种 unicode 形式)。文本编码是我们告诉计算机将文本表示为字节的方式。使用 UTF8 时,字母“A”将由一个字节表示,而日语平假名“あ”将是 3 个字节。编码使我们能够正确读取和写入文本。您可以阅读有关 here 的更多信息(以防链接中断:WaybackMachine link)。
StreamReader
和 StreamWriter
是围绕阅读文本构建的,因此它们为我们处理编码。一个用于阅读,另一个用于写作。如果您使用接受文件名的构造函数实例化 StreamReader
或 StreamWriter
,它实际上会在内部使用 FileStream
。
StreamReader
为我们提供了如下方法:
-
ReadLine
- 从文件中读取,直到找到回车 + 换行符 (\r\n
) 或只是换行符 (\n
),指示单行文本的结尾,以及返回string
。 -
ReadToEnd
- 将整个文件内容读入string
。
StreamWriter
为我们提供了如下方法:
相比之下,FileStream
只有 Read
和 Write
之类的方法,它们使用字节。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。