【.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

智能推荐

COMSOL光电、FDTD光学器件超表面、TCAD半导体器件仿真技术与应用直播学习_comsol与tcad仿真能结合起来吗-程序员宅基地

文章浏览阅读362次。Ø 散射边界和端口边界的使用方法和技巧(波失方向和极化方向设置、S参数、反射率和透射率的计算和提取、高阶衍射通道反射投射效率的计算)Ø COMSOL WITH MATLAB 进行复杂的物理场或者集合模型的建立(如超表面波前的衍射计算)Ø COMSOL WITH MATLAB 进行复杂函数的设置(如石墨烯电导函数的设置和仿真)Ø 热电子光探测器的电磁场空间分布与FDTD材料折射率的导出(脚本计算不同金属层的吸收)Ø 利用S参数分析组并通过脚本实现金属纳米小球的吸收/散射消光与近场增强的计算。_comsol与tcad仿真能结合起来吗

〖程序员的自我修养 - 精炼面试篇⑫〗- HR面试避坑指南 - 工作能力类型问题的踩坑点-程序员宅基地

文章浏览阅读1.2w次,点赞25次,收藏24次。常见的个人能力踩坑点的问题学完了,接下来我们再看看关于 "工作能力" 的一些常见问题,面对这些问题我们又该如何的应对呢?该章节将会一一解答。

uni-app运行到小程序模拟器,微信开发者工具报错“ERR_CONNECTION_TIMED_OUT”_微信接口connect timed out-程序员宅基地

文章浏览阅读765次。uni-app运行到小程序模拟器,微信开发者工具报错“ERR_CONNECTION_TIMED_OUT”_微信接口connect timed out

鲲鹏弹性云服务器型号,鲲鹏弹性云服务器型号-程序员宅基地

文章浏览阅读238次。鲲鹏弹性云服务器型号 内容精选换一换弹性云服务器(Elastic Cloud Server)是一种可随时自动获取、计算能力可弹性伸缩的云服务器,可帮助您打造可靠、安全、灵活、高效的应用环境,确保服务持久稳定运行,提升运维效率。公有云平台支持弹性云服务器在专属主机与公共资源池之间迁移,具体包括:将创建在专属主机上的弹性云服务器迁移至其他专属主机。将创建在专属主机上的弹性云服务器迁移至公共资源池,即不..._以下哪种是鲲鹏通用增强型弹性云服务器

Springboot 超简单实现在线预览,Word文档 doc、xlsx、pdf、txt等_springboot在线预览word-程序员宅基地

文章浏览阅读1.6w次,点赞21次,收藏124次。前言PDF、TXT 只要资源可访问,根本就不需要进行任何处理,直接访问查看就完事了。也是因为这个PDF可以直接查看(现在浏览器基本支持了),那么我们实现Word文档在线预览,其实也是 把WORD文档 复制一份生成一份供预览的 PDF文件而已。先看看效果:正文这篇实例,实现在线预览WORD文档,分两步:一. 安装OpenOffice二.写点小代码一.安装OpenOffice不要看到安装东西就觉得麻烦,因为这个安装不需要做任何配置,你只需要..._springboot在线预览word

史上最强 Java 学习路线图!_java自学路线图(超全超详细)-程序员宅基地

文章浏览阅读10w+次,点赞3.1k次,收藏2.3w次。网上看到一首诗:“代码尽头谁为峰,一见秃头道成空。编程修真路破折,一步一劫渡飞升。”感觉还挺有意境的。第一部分:Java 基础篇这个阶段就是编程入门,掌握 Java 这门编程语言的基本语法,为后面的修行之路打好基础。包括的知识点有:环境搭建——Intellij IDEA 一站式搞定Java 基础语法面向对象——封装、继承、多态数组字符串集合框架IO反射注解网络编程并发编程这方面的资源我给大家梳理下:1)针对 Intellij IDEA,GitHub 上有一份简体中文版教_java自学路线图(超全超详细)

随便推点

matlab格兰杰因果检验,如何用STATA做panel data的格兰杰因果检验-程序员宅基地

文章浏览阅读889次。Granger causality testgcause var1 var2 [if exp] [in range] , lags(#) [ exog(varlist) regress]gcause is for use with time-series data.You must tsset your data beforeusing this commands; see help tsse..._格兰杰因果分析原理 matlab

初识Lua-OpenWrt路由界面配置_openwrt overview-程序员宅基地

文章浏览阅读2.4k次。OpenWrt路由的界面配置使用LuCI系统管理。在此,对其中的目录结构进行介绍:-目录结构以status模块为例进行说明,模块入口文件status.lua在目录lua\luci\contro_openwrt overview

ASM字节码编程 | 如果你只写CRUD,那这种技术栈你永远碰不到!!!_asm-commonsgit下载-程序员宅基地

文章浏览阅读2.8k次。小傅哥 | https://bugstack.cn 沉淀、分享、成长,专注于原创专题案例,以最易学习编程的方式分享知识,让自己和他人都能有所收获。目前已完成的专题有;Netty4.x实战专题案例、用Java实现JVM、基于JavaAgent的全链路监控、手写RPC框架、架构设计专题案例、源码分析、算法学习等。一、前言写这篇文章的时候我在想可能大部分程序员包括你我,常常都在忙于业务开发或奔..._asm-commonsgit下载

微信8.0.6内测版本更新啦,这次又“炸”了(附内测地址)-程序员宅基地

文章浏览阅读2.9k次。哈喽大家好,我是程序员双木L,不定时给大家带来各种好玩且有趣的功能!iOS微信8.0.6正式版已经发布,很多安卓微信用户就吐槽:iOS都8.0.6版本了,安卓咋还一直停留在8.0.3版本呢?最近,微信团队直接跳过了安卓微信8.0.4和8.0.5,直接发布了8.0.6测试版,这下终于跟iOS版本同步了微信团队的更新说明只是说了"解决了一些已知问题",下面就让小编带领大家看看有哪些变化吧:1、新版拍一拍可以设置使用动效表情我觉得最有意思的更新是:拍一拍支持添加表情啦,只需在拍一拍后缀加入炸弹、庆祝、烟_微信8.0.6

小程序swiper组件的bindchange方法重复执行问题(解决真机无限滑动问题)_swiper bindchange-程序员宅基地

文章浏览阅读1k次。修正方法<swiperautoplay="{{autoplay}}"interval="{{interval}}"duration="{{duration}}"bindchange="swiperChange"current="{{current}}">swiperChange(e){ let current = e.detail.current; let source = e.detail.source //console.log(source); _swiper bindchange

Linux软件安装到哪个目录_linux软件安装在哪个目录-程序员宅基地

文章浏览阅读1w次,点赞10次,收藏62次。软件安装:usr:系统级目录。可理解为C:Windows/,usr/lib:可理解为C:Windows/System32。usr/loc:用户级的程序目录。可理解为C:/Progrem Files/。用户自己编译的软件默认安装到这里。/opt:用户级的程序目录,可理解为D:/Software,opt用于放置第三方大型软件,当不需要时,直接rm-f即可。当硬盘容量不够时,也可将opt单独挂载到其他磁盘上使用。源码:usr/src:系统级源码目录。usr/local/src:用户级源码目录。常用目录及_linux软件安装在哪个目录

推荐文章

热门文章

相关标签