c# TextReader/TextWriter 的类

TextReader以及TextWriter这两个类,非常有用,很多方法都接受它们作为参数。

  TextReader有两个子类:

  1. StringReader/StringWriter 用于读取字符串;
  2. StreamReader/StreamWriter 用于读取流;

一、StringReader的作用

  StringReader主要用于读取字符串。

  常用方法如下:

成员 说明
Close 关闭 StringReader
Peek 返回下一个可用的字符,但不使用它
Read 读取输入字符串中的下一个字符并将该字符的位置提升一个字符,重载可提升任意个字符
ReadAsync 读取字符的指定最大数量从当前字符串异步和数据写入缓冲区,从指定索引处开始
ReadBlock 从当前文本读取器中读取指定数目的字符并从指定索引开始将该数据写入缓冲区
ReadBlockAsync 读取字符的指定最大数量从当前字符串异步和数据写入缓冲区,从指定索引处开始
ReadLine 读取一行字符从当前字符串并将数据作为字符串返回
ReadLineAsync 读取一行字符异步从当前字符串并将数据作为字符串返回
ReadToEnd 读取当前位置的任何字符。该字符串的末尾并将其返回作为一个字符串
ReadToEndAsync 读取当前位置的所有字符为字符串的结尾异步并将其返回作为一个字符串

  示例如下:

        static void Main(string[] args)
        {
            TextReader tr = new StringReader("你在他乡还好吗?\n很好!");
            string line1 = tr.ReadLine();     //读取一行
            Console.WriteLine(line1);     //你在他乡好好吗?
            string line2 = tr.ReadLine();
            Console.WriteLine(line2);     //很好!
            //注意到此处时,指针已到,末尾,注释掉上面4行才能看到效果
            //Peek()是读,但不用,不会影响指针
            while (tr.Peek() > 0)
            {
                Console.WriteLine((char)tr.Read());     //逐个读取所有字符
            }

            char[] charArr = new char[4];
            tr.ReadBlock(charArr, 1, 3);
            for (int i = 0; i < charArr.Count(); i++)
            {
                Console.WriteLine(charArr[i]);
            }

            Console.ReadKey();
        }

二、StreamReader的使用

  StreamReader属性:

属性 说明
BaseStream 返回基础流
CurrentEncoding 获取当前 StreamReader 对象正在使用的当前字符编码
EndOfStream 获取一个值,该值表示当前的流位置是否在流的末尾

  StreamReader方法:

方法 说明
Close 关闭 StreamReader 对象和基础流,并释放与读取器关联的所有系统资源
DiscardBufferedData 清除内部缓冲区
Dispose 释放由 TextReader 对象使用的所有资源
Peek 返回下一个可用的字符,但不使用它
Read 读取输入流中的下一个字符并使该字符的位置提升一个字符
ReadAsync 异步从当前流中读取指定数目的字符并从指定索引开始将该数据写入缓冲区
ReadBlock 从当前流中读取指定数目的字符并从指定索引开始将该数据写入缓冲区
ReadBlockAsync 异步从当前流中读取指定数目的字符并从指定索引开始将该数据写入缓冲区
ReadLine 从当前流中读取一行字符并将数据作为字符串返回
ReadLineAsync 从当前流中异步读取一行字符并将数据作为字符串返回
ReadToEnd 从流的当前位置到末尾读取所有字符
ReadToEndAsync 异步读取从当前位置到流的结尾的所有字符并将它们作为一个字符串返回

  示例:

        static void Main(string[] args)
        {
            FileStream fs = new FileStream(@"D:\123.txt",FileMode.Open,FileAccess.Read);
            TextReader tr = new StreamReader(fs,Encoding.Default);
            string str = tr.ReadToEnd();
            Console.WriteLine(str);

            Console.ReadKey();
        }

三、StringWriter的作用

  StringWirter主要用于对字符串进行读写。

  常用属性:

属性 说明
Encoding 获取将输出写入到其中的 Encoding
FormatProvider 获取控制格式设置的对象
NewLine 获取或设置由当前 TextWriter 使用的行结束符字符串

  常用方法:

方法 说明
Close 关闭当前的 StringWriter 和基础流
Dispose 释放StringWriter的资源
Flush 清理当前编写器的所有缓冲区,使所有缓冲数据写入基础设备
GetStringBuilder 返回基础 StringBuilder
Write 写入到 StringWriter 的此实例中
WriteLine 写入重载参数指定的某些数据,后跟行结束符

  示例:

        static void Main(string[] args)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("你在他乡还好吗?");
            using (TextWriter tw = new StringWriter(sb))
            {
                tw.WriteLine("难混啊!");
                Console.WriteLine(sb.ToString());   //输出你在他乡还好吗?难混啊!(后面有个换行符,Write则没有)
            }

            Console.ReadKey();
        }

四、StreamWriter的作用

  StreamWriter用于将一段内容写入到流里面,包括FileStream,MemoryStream等各种流。

  属性:

属性 说明
AutoFlush 获取或设置一个值,该值指示 StreamWriter 是否在每次调用 StreamWriter.Write 之后,将其缓冲区刷新到基础流
BaseStream 获取同后备存储区连接的基础流
Encoding 获取将输出写入到其中的 Encoding

  方法:

方法 说明
Close 关闭当前的 StreamWriter 对象和基础流
Flush 清理当前编写器的所有缓冲区,并使所有缓冲数据写入基础流
FlushAsync 异步清除此流的所有缓冲区并导致所有缓冲数据都写入基础设备中
Write 将字符写入流
WriteAsync 将字符异步写入该流
WriteLine 将字符写入该流,并加上结束符
WriteLineAsync 将行结束符异步写入该流

  示例:

        static void Main(string[] args)
        {
            using (StreamWriter tw = new StreamWriter(@"D:\123.txt"))
            {
                tw.WriteLine("难混啊!");
                Console.WriteLine(tw.BaseStream.GetType());     //输出FileStream
            }

            Console.ReadKey();
        }

时间: 2024-12-09 06:07:52

c# TextReader/TextWriter 的类的相关文章

C#流总结(文件流、内存流、网络流、BufferedStream、StreamReader/StreamWriter、TextReader/TextWriter)

一.文件流 FileStream类主要用于读写磁盘文件.常用于向磁盘存储数据或读取配置文件. 读取文件:复制代码 //文件流:读取 FileStream fileStream = File.Open(@"D:\test.txt", FileMode.Open);//初始化文件流 byte[] array = new byte[fileStream.Length];//初始化字节数组,用来暂存读取到的字节 fileStream.Read(array, 0, array.Length);/

C#路径/文件/目录/I/O常见操作汇总

文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案,也希望能提供给你一点有益的思路,如果你有好的建议,恳请能够留言,使这些内容更加完善. 主要内容:一.路径的相关操作, 如判断路径是否合法,路径类型,路径的特定部分,合并路径,系统文件夹路径等内容:二.相关通用文件对话框,这些对话框可以帮助我们操作文件系统中的文件和目录:三.文件.目录.驱动器的操作,如获取它们的

C# 流总结(Stream)

本篇文章简单总结了在C#编程中经常会用到的一些流.比如说FileStream.MemoryStream. BufferedStream. NetWorkStream. StreamReader/StreamWriter. TextReader/TextWriter等的简单用法. 内容 一  FileStream类 FileStream类主要用于读取磁盘上的文件或者向磁盘文件写入信息.有时,我们需要将程序中的一些数据存储到磁盘上或是读取配置文件中某些内容,在这里我们就会用该类. 从磁盘上的文件中读

Stream 流操作

Stream 类 先看下面的图 Stream 是所有流的抽象基类(不能被实例化,需要使用他的派生类FileStream/MemoryStream/BufferedStream).流是字节序列的抽象概念,例如文件.输入/输出设备.内部进程通信管道或者 TCP/IP 套接字.Stream 类及其派生类提供这些不同类型的输入和输出的一般视图,使程序员不必了解操作系统和基础设备的具体细节. 流涉及三个基本操作: 可以读取流.读取是从流到数据结构(如字节数组)的数据传输. 可以写入流.写入是从数据结构到流

NET中级课--文件,流,序列化2

1.流的类型体系: 基础流    装饰器流    包装器类    帮助类 2.               stream file~     memory~     network~ stream是个抽象类,其中的方法要么抽象要么虚拟(virtual) 3.装饰器流:继承自stream类,又包含了stream类的引用.如bufferedstream   Gzipstream 装饰器模式的目的:为现有类添加功能. 4.包装器类:注意是类,而不是流.即它们不是流类型但包含了流的引用,提供了对流进行操

IO操作 第一篇 学习(转载)

问题8:如何使用通配符搜索指定目录内的所有文件: 解决方案: 使用DirectoryInfo.GetFiles方法的重载版本,它可以接受一个过滤表达式,返回FileInfo数组,另外它的参数还可以指定是否对子目录进行查找.如: dir.GetFiles("*.txt", SearchOption.AllDirectories); 问题9:如何复制.移动.重命名.删除文件和目录: 解决方案:使用FileInfo和DirectoryInfo类. 下面是FileInfo类的相关方法: Fil

C# 关于流的认识(借鉴)

一  FileStream类 FileStream类主要用于读取磁盘上的文件或者向磁盘文件写入信息.有时,我们需要将程序中的一些数据存储到磁盘上或是读取配置文件中某些内容,在这里我们就会用该类. 从磁盘上的文件中读取内容: FileStream读取文件: 1 1 FileStream file = File.Open(@"F:\file.txt", FileMode.Append);//初始化文件流2 2 byte[] array = Encoding.UTF8.GetBytes(&q

C# 流总结

注意事项: 1.流使用后必须要关闭. 2.把流中数据加载到内存时要考虑内存溢出等问题. 一  FileStream类 FileStream类主要用于读取磁盘上的文件或者向磁盘文件写入信息.有时,我们需要将程序中的一些数据存储到磁盘上或是读取配置文件中某些内容,在这里我们就会用该类. 1 FileStream file = File.Open(@"F:\file.txt", FileMode.Open); //初始化文件流 2 byte[] array = new byte[file.L

C# 流总

本文简单总结在C#编程中经常会用到的一些流: 比如说FileStream.MemoryStream. BufferedStream. NetWorkStream. StreamReader/StreamWriter. TextReader/TextWriter等的简单用法. 一  FileStream类      FileStream类主要用于读取磁盘上的文件或者向磁盘文件写入信息.有时,我们需要将程序中的一些数据存储到磁盘上或是读取配置文件中某些内容,在这里我们就会用该类. 从磁盘上的文件中读