常见流的继承关系:
StreamReader
命名空间:“System.IO” 字节流
StreamReader : TextReader(读取有序字符)
- StreamReader 用于读取标准文本文件中的信息,而 Stream 类用于字节输入和输出。
- StreamReader 除非另外指定,否则默认为 UTF-8 编码。
- 如果使用属性获取当前字符编码,则 CurrentEncoding 该值在第一种方法之后才是可靠的 Read ,因为在首次调用方法之前不会进行编码自动检测 Read 。
- 默认情况下, StreamReader 不是线程安全的。 TextReader.Synchronized有关线程安全包装
实例化一个 StreamReader 对象并调用其 ReadAsync 方法以异步读取文件:
using System;
using System.IO;
using System.Threading.Tasks;
class Example
{
static async Task Main()
{
await ReadAndDisplayFilesAsync();
}
static async Task ReadAndDisplayFilesAsync()
{
String filename = "TestFile1.txt";
Char[] buffer;
using (var sr = new StreamReader(filename)) {
buffer = new Char[(int)sr.BaseStream.Length];
await sr.ReadAsync(buffer, 0, (int)sr.BaseStream.Length);
}
Console.WriteLine(new String(buffer));
}
}
// The example displays the following output:
// This is the first line of text in a relatively short file.
// This is the second line.
// This is the third line.
// This is the fourth and final line.
此类型实现 IDisposable 接口。 在使用完类型后,您应直接或间接释放类型。 若要直接释放类型,请在 try/catch 块中调用其Dispose 方法。 若要间接释放类型,请使用 using(在 C# 中)或 Using(在 Visual Basic 中)等语言构造。
有关详细信息,请参阅 IDisposable 接口主题中的“使用实现 IDisposable 的对象”一节。
属性 | 含义 |
---|---|
BaseStream | 返回基础流。 |
CurrentEncoding | 获取当前 StreamReader 对象正在使用的当前字符编码。 |
EndOfStream | 获取一个值,该值指示当前的流位置是否在流结尾。 |
方法 | 含义 |
---|---|
Close() | 关闭 StreamReader 对象和基础流,并释放与读取器关联的所有系统资源。 |
CreateObjRef(Type) | 创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。(继承自 MarshalByRefObject) |
DiscardBufferedData() | 清除内部缓冲区。 |
Dispose() | 释放由 TextReader 对象使用的所有资源。(继承自 TextReader) |
Dispose(Boolean) | 关闭基础流,释放 StreamReader 使用的未托管资源,同时还可以根据需要释放托管资源。 |
Equals(Object) | 确定指定对象是否等于当前对象。(继承自 Object) |
GetHashCode() | 作为默认哈希函数。(继承自 Object) |
GetLifetimeService() | 已过时。检索控制此实例的生存期策略的当前生存期服务对象。(继承自 MarshalByRefObject) |
GetType() | 获取当前实例的 Type。(继承自 Object) |
InitializeLifetimeService() | 已过时。获取生存期服务对象来控制此实例的生存期策略。(继承自 MarshalByRefObject) |
MemberwiseClone() | 创建当前 Object 的浅表副本。(继承自 Object) |
MemberwiseClone(Boolean) | 创建当前 MarshalByRefObject 对象的浅表副本。(继承自 MarshalByRefObject) |
Peek() | 返回下一个可用字符,但不使用它。 |
Read() | 读取输入流中的下一个字符并使该字符位置提升一个字符。 |
Read(Char[], Int32, Int32) | 从指定的索引位置开始将来自当前流的指定的最多字符读到缓冲区。 |
Read(Span) | 将当前流中的字符读入范围。 |
ReadAsync(Char[], Int32, Int32) | 从当前流中异步读取指定的最大字符,并且从指定的索引位置开始将该数据写入缓冲区。 |
ReadAsync(Memory, CancellationToken) | 将当前流中的字符异步读入内存块。 |
ReadBlock(Char[], Int32, Int32) | 从当前流中读取指定的最大字符数并从指定的索引位置开始将该数据写入缓冲区。 |
ReadBlock(Span) | 从当前流中读取字符并将数据写入缓冲区。 |
ReadBlockAsync(Char[], Int32, Int32) | 从当前流中异步读取指定的最大字符,并且从指定的索引位置开始将该数据写入缓冲区。 |
ReadBlockAsync(Memory, CancellationToken) | 从当前流中异步读取字符并将数据写入缓冲区。 |
ReadLine() | 从当前流中读取一行字符并将数据作为字符串返回。 |
ReadLineAsync() | 从当前流中异步读取一行字符并将数据作为字符串返回。 |
ReadToEnd() | 读取来自流的当前位置到结尾的所有字符。 |
ReadToEndAsync() | 异步读取来自流的当前位置到结尾的所有字符并将它们作为一个字符串返回。 |
ToString() | 返回表示当前对象的字符串。(继承自 Object) |