C# 流(Stream)

C#包括以下标准IO(输入/输出)类,可从不同的源(例如文件,内存,网络,隔离存储等)进行读取/写入。

流(Stream): System.IO.Stream 是一个抽象类,提供了将字节(读,写等)传输到源的标准方法。就像包装器类一样传输字节。需要从特定源读取/写入字节的类必须实现Stream类。

以下类继承Stream类,以提供从特定源读取/写入字节的功能:

FileStream:从物理文件读取字节或向物理文件写入字节,无论它是.txt,.exe,.jpg还是任何其他文件。FileStream派生自Stream类。

MemoryStream: MemoryStream读取或写入存储在内存中的字节。

BufferedStream: BufferedStream从其他Stream读取或写入字节,以提高某些I / O操作的性能。

NetworkStream: NetworkStream从网络套接字读取或写入字节。

PipeStream: PipeStream读取或写入来自不同进程的字节。

CryptoStream: CryptoStream用于将数据流链接到密码转换。

下图显示了流类的层次结构:

流类层次结构

流的阅读器和写入器

StreamReader:StreamReader是一个帮助程序类,用于通过使用编码值将字节转换为字符来从Stream读取字符。它可用于从不同的流(例如FileStream,MemoryStream等)中读取字符串(字符)。

StreamWriter:StreamWriter是一个帮助程序类,用于通过将字符转换为字节将字符串写入Stream。它可以用于将字符串写入不同的流,例如FileStream,MemoryStream等。

BinaryReader:BinaryReader是用于从字节读取原始数据类型的帮助程序类。

BinaryWriter:BinaryWriter用二进制写原始类型。

流IO

上面的图像显示,FileStream 从物理文件中读取字节,然后 StreamReader 通过将这些字节转换为字符串来读取字符串。同样,StreamWriter 获取一个字符串并将其转换为字节,然后写入 FileStream,然后 FileStream 将字节写入一个物理文件。因此,FileStream 处理字节,StreamReader 和 StreamWriter 处理字符串。

 要记住的要点

  1. Stream是用于从不同来源传输字节的抽象类。它是所有其他类的基类,这些其他类将字节读/写到不同的源。

  2. FileStream 类提供对物理文件的字节读写功能。

  3. 读写器类提供了从流类(FileStream,MemoryStream等)中读取字节并将字节转换为适当编码的功能。

  4. StreamReader通过将字节转换为字符串,提供了一个辅助方法来从FileStream中读取字符串。StreamWriter提供了一种帮助程序方法,可以通过将字符串转换为字节来将字符串写入FileStream。

在下一部分中了解如何读取/写入文件系统。