c# - IO 101 : Which are the main differences between TextWriter, FileStream 和 StreamWriter?

标签 c# .net-3.5 io .net

如果这个问题对于你们这些经验丰富的程序员来说可能听起来有点业余,让我首先道歉,问题是我在工作中一直有很多关于这个的争论所以我真的想弄清楚这个问题,这就是为什么我我依靠 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/

相关文章:

c# - 类属性上的 StackOverFlow

c# - 阿瓦隆码头 : how to align the tabs to the top right?

c# - 时间跨度错误..?

c - 在接收几 Gbit/s 流量的数据包记录器应用程序中执行磁盘 IO 的良好/实用策略是什么?

c# - 如何设置最小控制台大小 C#?

c# - 您可以将 Func<EFContext, TResult> 包装在 Entities Context 中以供重用吗?

c# - 事件 "chaining"有问题

c# - 使 Windows Forms 窗体可调整大小的最佳方法

java - 如何优雅地检查原始资源是否不存在?

Java 标准系统输入和缓冲读取器