【.Net实用方法总结】 整理并总结System.IO中TextReader类及其方法介绍_.net textreader-程序员宅基地

技术标签: c#  .net  .Net实用方法总结  System.IO方法总结和示例  

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


在这里插入图片描述

写在前面:

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


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

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<int> ReadAsync (char[] buffer, int index, int count);

参数

buffer

Char[]

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

index

Int32

buffer 中开始写入的位置。

count

Int32

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

返回

Task<Int32>

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

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

返回

String

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

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

返回

String

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

更多方法

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


写在结尾:

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

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/baidu_33146219/article/details/126735804

智能推荐

一步实现多个同级div,只改变点击的当前div样式_多个div点击一个修改样式-程序员宅基地

文章浏览阅读4.3k次,点赞3次,收藏9次。记录一点小技巧,直接上代码。&lt;!DOCTYPE html&gt;&lt;html&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;一步实现多个同级div,只改变点击的当前div样式&lt;/title&gt; &lt;/head&gt; &lt;script type_多个div点击一个修改样式

苹果手机相机九宫格怎么设置_瞧不起iPhone相机?苹果手机5个逆天拍照功能,效果惊艳堪比单反...-程序员宅基地

文章浏览阅读612次。经常有人说苹果手机拍照效果差?要么是被美颜相机惯坏了,要么根本就不知道苹果拍照隐藏功能!国外的大神都是用苹果手机拍vlog,为什么别人就能拍出 “大片”既视感?而我只能拍出乡村爱情故事?1、 自带滤镜很多小伙伴经常为了个滤镜,用其它美颜软件拍照,但是照片总是很模糊的感觉~其实苹果手机自带拍照滤镜,拍照的时候点击右上角的三个圈,就有非常多滤镜可以选择,清晰度那叫一个高!2、竖幅全景大家都知道手机可以..._苹果相机三个圈选哪个好看

javax.net.ssl.SSLHandshakeException: PKIX path building failed-程序员宅基地

文章浏览阅读9.1k次,点赞4次,收藏5次。错误信息本地环境缺少ssl证书一、下载证书可以通过浏览器下载;也可以使用命令行1、浏览器查看证书,直接导出即可2、命令行openssl s_client -connect <目标网址:端口号> < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > 证书名.crt二、导入证书1. 将证书移动到$JAVA_HOME/lib/security/c..._javax.net.ssl.sslhandshakeexception: pkix path building failed: sun.security

树状数组的python教程_python树状数组-程序员宅基地

文章浏览阅读1.4k次,点赞11次,收藏14次。包含了常见的所有树状数组的题型,并对一些相关原理进行剖析,lowbit的实现原理等基础原理请参考其它文章,这里不再赘述。本文适合于对树状数组有初步了解的读者,希望能对你们有所帮助orz_python树状数组

Linux内核阅读自学精简教程目录(必读)_linux内核教程-程序员宅基地

文章浏览阅读928次。学习Linux内核需要一定的计算机基础知识,包括操作系统,计算机网络等。以下是学习Linux内核的步骤:大部分程序员可能永远没有机会开发Linux内核或者驱动Linux,那么我们为什么还需要学习Linux内核呢?Linux的源代码和架构都是开放的,我们可以学到很多操作系统的概念和实现原理。Linux的设计哲学体系继承了UNIX,现在整个设计体系相当稳定和简化,这是大部分服务器使用Linux的重要原因。那学习Linux内核的原因就在于此。进一步了解内核的原理,有助于你更好地使用命令和程序设计,让你的面试和开发_linux内核教程

基于SQL Server数据库的安全性对策探究_sqlserver数据库的安全性-程序员宅基地

文章浏览阅读438次。SQL Server数据库的安全与计算机网络安全、数据库系统安全等存在一定的联系,某一环节的安全隐患对整个系统的安全造成一定威胁,因此对数据库安全方面采取防范措施具有一定的必要性,与当下网络信息安全管理方面的要求相适应,它可以为用户提供稳定、安全的网络环境。在数据库系统中,管理者如果从用户界面进入系统,存在的数据库安全问题与使用者面临的安全问题相同,但如果管理者从数据库管理界面进入系统的话,由于这种情况下管理者的权限比较大,如果从数据库服务器的DBMS进入数据库的话,对数据库安全存在比较大的威胁。_sqlserver数据库的安全性

随便推点

地图瓦片编号与经纬度的换算关系及不同源坐标之间的相互转换_瓦片编号转经纬度-程序员宅基地

文章浏览阅读2.2k次。前言地图瓦片编号与与经纬度坐标之间的转换与简单理解。相关资料看了好多次,每次看完就忘,这里做一个简单的学习笔记。Web墨卡托投影通常提到Web墨卡托投影,我最先想到的关键词是: “3857”、“谷歌地图”。再往深了想就是“正轴等角圆柱投影”、“越靠近两极变形越大”等特性。以前对“越靠近两极变形越大”的理解是:越靠近两极,地图横向拉伸越严重。今天查资料时突然意识到一点:越靠近两级纵向拉伸同样越严重。也就是说纬度分布是不均匀的。墨卡托投影示意图地图瓦片分割目前接触的绝大多数地图瓦片是以._瓦片编号转经纬度

Windows系统Git安装教程(详解Git安装过程)_windows安装git-程序员宅基地

文章浏览阅读1.4w次,点赞13次,收藏39次。windows的git安装_windows安装git

最新支持java8的Java反编译工具汇总(大全)!!_java8 反编译工具-程序员宅基地

文章浏览阅读4k次。大多商业软件,会对程序进行加密、加壳等安全措施以防范软件被破解,从而使得反编译越来越难。反编译是一个对目标可执行程序进行逆向分析,从而得到源代码的过程。尤其是像Java这样的运行在虚拟机上的编程语言,更容易进行反编译得到源代码。 我们知道,在代码支撑方面,JDK 1.7引入了字符串Switch、泛型接口改进等新功能,1.8增加了lambda表达式、方法传递、多重注解等新特性,这使得反..._java8 反编译工具

python下列数据中不属于字符串的是_下列数据中,不属于字符串的是( )。 (6.0分)_学小易找答案...-程序员宅基地

文章浏览阅读1.6k次。【单选题】黄酮苷和黄酮苷元一般均能溶解的溶剂是【其它】跨境物流与海外仓操作【单选题】在python中,下列流程控制语句没有的是【单选题】采用碱溶解酸沉淀法提取芦丁,用石灰乳调PH时,应调至【多选题】网络拍卖网站的形式主要有( )【单选题】设有字符串str1='Hello',str2='world',则str1*2的结果是【单选题】四氢硼钠反应可用于鉴别【单选题】阅读下面一段程序: words ..._"阅读下面一段示例程序: words = \"hello,python\" result = words.capitalize() res"

LeetCode 第 344 题(Reverse String)_leetcode 344题-程序员宅基地

文章浏览阅读3k次。LeetCode 第 344 题(Reverse String) Write a function that takes a string as input and returns the string reversed. Example: Given s = “hello”, return “olleh”. 这道题非常简单。用 C++ 来写的话主要是考察对 string 类型_leetcode 344题

关于vue创建项目以及关于eslint报错的问题_[eslint] e:\dqgyjjpt\src\views\dwgl\renaddeditdial-程序员宅基地

文章浏览阅读354次。3 如何让less在保存的时候 不再自动生成css文件呢, 同样也是在vetur中的essting.json中进行配。第一种解决方式 就是在vetur插件中增加trailngComma:'none',但是对于我没有解决问题。第二种就是.prettierrc文件中 增加了trailngComma:'none' 这行代码。在项目根目录下新建一个.prettierrc.json文件。_[eslint] e:\dqgyjjpt\src\views\dwgl\renaddeditdialog.vue 5:22 error unexpect

推荐文章

热门文章

相关标签