【.Net实用方法总结】 整理并总结System.IO中TextReader类及其方法介绍

作者简介:博主是一位.Net开发者,同时也是RPA和低代码平台的践行者。
个人主页:会敲键盘的肘子
系列专栏:.Net实用方法总结
专栏简介:博主针对.Net开发和C站问答过程中遇到的问题进行总结,形成本专栏,希望可以帮助到您解决问题。
座右铭:总有一天你所坚持的会反过来拥抱你。


【.Net实用方法总结】 整理并总结System.IO中TextReader类及其方法介绍_第1张图片

写在前面:

本文主要介绍System.IO命名空间的TextReader 类,介绍其常用的方法和示例说明。


本文关键字:System.IO、TextReader类、方法示例、C#

文章目录

      • 1️⃣ System.IO命名空间
      • 2️⃣ TextReader类
        • ♈ 定义
        • ♌ 常用方法
          • Close() 关闭 TextReader并释放与该 `TextReader` 关联的所有系统资源
          • Dispose() 释放由 TextReader 对象使用的所有资源
          • Read(Char[], Int32, Int32) 从当前读取器中读取指定数目的字符并从指定索引开始将该数据写入缓冲区
          • ReadAsync(Char[], Int32, Int32) 异步从当前文本读取器中读取指定最大字符数并从指定索引开始将该数据写入缓冲区
          • ReadLine() 从文本读取器中读取一行字符并将数据作为字符串返回
          • ReadToEnd() 读取从当前位置到文本读取器末尾的所有字符并将它们作为一个字符串返回
        • ♎ 更多方法

1️⃣ System.IO命名空间

.NET中的IO操作命名空间,包含允许读写文件数据流的类型以及提供基本文件和目录支持的类型。

我们在.NET中的IO操作,经常需要调用一下几个类。

  • FileStream类

​ 文件流类,负责大文件的拷贝,读写。

  • Path类

​ Path类中方法,基本都是对字符串(文件名)的操作,与实际文件没多大关系。

  • File类

    File类可以进行一些对小文件拷贝、剪切操作,还能读一些文档文件。

  • Dirctory类

    目录操作,创建文件、删除目录,获取目录下文件名等等。

2️⃣ TextReader类

♈ 定义

表示可读取有序字符系列的读取器。

public abstract class TextReader : MarshalByRefObject, IDisposable

示例

类是一个抽象类。 因此,不会在代码中实例化它。 该 StreamReader 类派生自 TextReader 成员的实现,以便从流中读取。 以下示例演示如何使用 [StreamReader.ReadAsync(Char], Int32, Int32) 该方法读取文件中的所有字符。 在将字符添加到类实例 StringBuilder 之前,它会检查每个字符是字母、数字还是空格。

using System;
using System.Windows;
using System.IO;
using System.Text;

namespace WpfApplication
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private async void Button_Click_1(object sender, RoutedEventArgs e)
        {
            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();
        }
    }
}

此类型实现 IDisposable 接口。 使用从此类型派生的任何类型后,应直接或间接释放它。 若要直接释放类型,请在 try/catch 块中调用其 Dispose 方法。 若要间接释放类型,请使用 using(在 C# 中)或 Using(在 Visual Basic 中)等语言构造。 有关详细信息,请参阅接口主题中的 IDisposable Dispose 和“使用实现 IDisposable 的对象”部分。

♌ 常用方法

Close() 关闭 TextReader并释放与该 TextReader 关联的所有系统资源
public virtual void Close ();

注意:此方法调用 Dispose ,指定 true 以释放所有资源。 不需要专门调用 Close 方法。 请确保 Stream 已正确释放每个对象。 可以 Stream using Using 在 Visual Basic) 中 (或块中声明对象,以确保释放流及其所有资源,或者可以显式调用 Dispose 方法。

Dispose() 释放由 TextReader 对象使用的所有资源
public void Dispose ();
Read(Char[], Int32, Int32) 从当前读取器中读取指定数目的字符并从指定索引开始将该数据写入缓冲区
public virtual int Read (char[] buffer, int index, int count);

参数

buffer

Char[]

当此方法返回时,包含指定的字符数组,此数组中 index 和 (index + count - 1) 之间的值被从当前源中读取的字符所替换。

index

Int32

buffer 中开始写入的位置。

count

Int32

最多读取的字符数。 如果在将指定数量的字符读入缓冲区之前就已达读取器的末尾,则返回该方法。

返回

Int32

已读取的字符数。 该数会小于或等于 count,具体取决于读取器中是否有可用的数据。 如果调用此方法时没有留下更多的字符供读取,则此方法返回 0(零)。

ReadAsync(Char[], Int32, Int32) 异步从当前文本读取器中读取指定最大字符数并从指定索引开始将该数据写入缓冲区
public virtual System.Threading.Tasks.Task ReadAsync (char[] buffer, int index, int count);

参数

buffer

Char[]

当此方法返回时,包含指定的字符数组,此数组中 index 和 (index + count - 1) 之间的值被从当前源中读取的字符所替换。

index

Int32

buffer 中开始写入的位置。

count

Int32

最多读取的字符数。 如果在将指定数量的字符读入缓冲区之前就已达读取器的末尾,则返回该方法。

返回

Task

表示异步读取操作的任务。 TResult 参数的值包含读入缓冲区的总字节数。 如果当前可用字节数少于所请求的字节数,则该结果值可小于所请求的字节数;如果已到达流结尾时,则为 0(零)。

ReadLine() 从文本读取器中读取一行字符并将数据作为字符串返回
public virtual string? ReadLine ();

返回

String

读取器中的下一行,或 null(如果已读取所有字符)。

ReadToEnd() 读取从当前位置到文本读取器末尾的所有字符并将它们作为一个字符串返回
public virtual string ReadToEnd ();

返回

String

一个包含从当前位置到文本读取器末尾的所有字符的字符串。

♎ 更多方法

更多方法请查阅官方文档TextReader类。


⭐写在结尾:

文章中出现的任何错误请大家批评指出,一定及时修改。

希望写在这里的小伙伴能给个三连支持

你可能感兴趣的:(.Net实用方法总结,.net,c#)