FileStream 与 StreamReader 和 StreamWriter - 有什么区别?
FileStream vs StreamReader and StreamWriter - what's the difference?
在处理无法通过 FileStream
完成的文件时,通过 StreamReader
和 StreamWriter
允许哪些功能,反之亦然?我检查了文档,它们都有读/写选项,包括更高级的选项。那么我应该什么时候使用它们?
A FileStream
是一个流。像所有 Streams 一样,它只处理 byte[] 数据。
A StreamWriter
: TextWriter,是一个 Stream-decorator。 TextWriter 将 String 或 char 等文本数据编码为 byte[],然后将其写入链接的 Stream。
当你有 byte[] 数据时,你使用裸 FileStream
。当你想写文本时,你添加一个 StreamWriter
。使用 Formatter 或 Serializer 来写入更复杂的数据。
作者:Henk
FileStream
是用于处理本地文件的最低级 Stream
对象。因此,它以二进制(字节)形式处理文件。你可以读那么多字节,或者写那么多字节。
在处理文本时,我们必须考虑文本编码。为具有不同字符集的不同文化创建了许多文本编码。现在最常见的是 UTF8(unicode 的一种形式)。文本编码是我们告诉计算机将文本表示为字节的方式。使用 UTF8,字母“A”将由单个字节表示,但日语平假名“あ”将是 3 个字节。编码使我们能够正确地读写文本。您可以阅读更多相关内容 here (in case the link ever breaks: WaybackMachine link).
StreamReader
和 StreamWriter
是围绕阅读文本构建的,因此它们为我们处理了编码。一个用于阅读,另一个用于写作。如果您使用接受文件名的构造函数实例化 StreamReader
或 StreamWriter
,它实际上会在内部使用 FileStream
。
StreamReader
为我们提供了如下方法:
ReadLine
- 从文件中读取直到找到回车符 return + 换行符 (\r\n
) 或只是换行符 (\n
),表示一个文件的结尾单行文本,并且 return 是 string
.
ReadToEnd
- 将整个文件内容读入 string
.
StreamWriter
为我们提供了如下方法:
相比之下,FileStream
only has methods like Read
and Write
,它使用字节。
在处理无法通过 FileStream
完成的文件时,通过 StreamReader
和 StreamWriter
允许哪些功能,反之亦然?我检查了文档,它们都有读/写选项,包括更高级的选项。那么我应该什么时候使用它们?
A FileStream
是一个流。像所有 Streams 一样,它只处理 byte[] 数据。
A StreamWriter
: TextWriter,是一个 Stream-decorator。 TextWriter 将 String 或 char 等文本数据编码为 byte[],然后将其写入链接的 Stream。
当你有 byte[] 数据时,你使用裸 FileStream
。当你想写文本时,你添加一个 StreamWriter
。使用 Formatter 或 Serializer 来写入更复杂的数据。
作者:Henk
FileStream
是用于处理本地文件的最低级 Stream
对象。因此,它以二进制(字节)形式处理文件。你可以读那么多字节,或者写那么多字节。
在处理文本时,我们必须考虑文本编码。为具有不同字符集的不同文化创建了许多文本编码。现在最常见的是 UTF8(unicode 的一种形式)。文本编码是我们告诉计算机将文本表示为字节的方式。使用 UTF8,字母“A”将由单个字节表示,但日语平假名“あ”将是 3 个字节。编码使我们能够正确地读写文本。您可以阅读更多相关内容 here (in case the link ever breaks: WaybackMachine link).
StreamReader
和 StreamWriter
是围绕阅读文本构建的,因此它们为我们处理了编码。一个用于阅读,另一个用于写作。如果您使用接受文件名的构造函数实例化 StreamReader
或 StreamWriter
,它实际上会在内部使用 FileStream
。
StreamReader
为我们提供了如下方法:
ReadLine
- 从文件中读取直到找到回车符 return + 换行符 (\r\n
) 或只是换行符 (\n
),表示一个文件的结尾单行文本,并且 return 是string
.ReadToEnd
- 将整个文件内容读入string
.
StreamWriter
为我们提供了如下方法:
相比之下,FileStream
only has methods like Read
and Write
,它使用字节。