TextReader抽象类表示可读取有序字符系列的读取器。
官方文档部分描述如下:
string filename = @"C:\Example\existingfile.txt"; char[] result; StringBuilder builder = new StringBuilder(); using (StreamReader reader = File.OpenText(filename)) { result = new char[reader.BaseStream.Length]; await reader.ReadAsync(result, 0, (int)reader.BaseStream.Length); } foreach (char c in result) { if (char.IsLetterOrDigit(c) || char.IsWhiteSpace(c)) { builder.Append(c); } } FileOutput.Text = builder.ToString();
二、StreamReader
实现一个 TextReader,使其以一种特定的编码从字节流中读取字符。
注:可以用File.OpenText(path)来获得StreamReader的实例对象。也可以根据以上构造函数(输入文件路径参数或者流实例对象)来获得实例对象。
string filename = @"C:\Example\existingfile.txt"; char[] result; StringBuilder builder = new StringBuilder(); using (StreamReader reader = File.OpenText(filename)) { result = new char[reader.BaseStream.Length]; await reader.ReadAsync(result, 0, (int)reader.BaseStream.Length); } foreach (char c in result) { if (char.IsLetterOrDigit(c) || char.IsWhiteSpace(c)) { builder.Append(c); } } FileOutput.Text = builder.ToString(); try { // Create an instance of StreamReader to read from a file. // The using statement also closes the StreamReader. using (StreamReader sr = new StreamReader("TestFile.txt")) { string line; // Read and display lines from the file until the end of // the file is reached. while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } } } catch (Exception e) { // Let the user know what went wrong. Console.WriteLine("The file could not be read:"); Console.WriteLine(e.Message); } 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)); }三、StringReader
StringReader实现从字符串进行读取的TextReader.
static async void ReadCharacters() { StringBuilder stringToRead = new StringBuilder(); stringToRead.AppendLine("Characters in 1st line to read"); stringToRead.AppendLine("and 2nd line"); stringToRead.AppendLine("and the end"); using (StringReader reader = new StringReader(stringToRead.ToString())) { string readText = await reader.ReadToEndAsync(); Console.WriteLine(readText); } }