zoukankan      html  css  js  c++  java
  • 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("你在他乡还好吗?
    很好!");
                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();
            }
    复制代码
  • 相关阅读:
    利用原生JS判断组合键
    MySQL基本操作简述
    Java链接Mysql传输数据
    Java培训--->>基础
    Java基础之字符串-->>字符串处理
    Java基础之结构-->>条件结构与循环结构
    Java基础之数组-->>数组常用操作
    Front End Development Certification (HTML5 and CSS)
    FlexSlider插件的详细设置参数
    常见<meta>的基本用法详解
  • 原文地址:https://www.cnblogs.com/zxbzl/p/3929846.html
Copyright © 2011-2022 走看看