如果这个问题对于你们这些经验丰富的程序员来说可能听起来有点业余,让我首先道歉,问题是我在工作中一直有很多关于这个的争论所以我真的想弄清楚这个问题,这就是为什么我我依靠 stackoverflow 社区一劳永逸地解决这个问题 :)
因此,一方面,根据 MSDN,我们有:
TextWriter Class
Represents a writer that can write a sequential series of characters. This class is abstract.
FileStream Class
Exposes a Stream around a file, supporting both synchronous and asynchronous read and write operations.
StreamWriter Class
Implements a TextWriter for writing characters to a stream in a particular encoding.
另一方面,很明显它们都属于 System.IO,但考虑到 MSDN 示例混合了其中的一些示例,我仍然没有达到非常想要的 a-ha 时刻。
如有任何意见,我们将不胜感激,在此先致谢!
最佳答案
流处理字节,写入器处理字符。
字节 != 字符。一个字符可能需要多个字节来表示。从字符到字节的映射称为编码。
FileStream
指的是写入文件的字节,类似于 MemoryStream
指的是写入内存缓冲区的字节。为了将字符写入流,您需要将它们转换为字节串。这就是 StreamWriter
发挥作用的地方。它采用字符序列和编码,并将其转换为字节序列。
TextWriter
是所有 Writers 都必须遵守的接口(interface)(好吧,抽象基类)。它具有基于字符的所有操作。字节的等效项是 Stream
抽象基类。
事情也朝着相反的方向发展。有一个 TextReader
抽象基类,描述如何从某处读取字符,还有一个 StreamReader
,它允许您从提供编码的面向字节的流中读取字符 -但这次反过来使用,在适当的地方将任何多字节序列聚合成单个字符。
Stream
可用于读取和写入,因为字节是 I/O 操作中使用的最低级别的项目。
关于c# - IO 101 : Which are the main differences between TextWriter, FileStream 和 StreamWriter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1010555/