zoukankan      html  css  js  c++  java
  • Stream篇(3)【StreamReader】

    说明:实现一个TextReader,是其子类。父类是Text读取器,子类是流读取器

    一、构造函数

    1、StreamReader(Stream stream)stream对象包括Stream对象及其派生类对象

    2、StreamReader(string str, Encoding encoding),str是文件地址,enconding是编码

    3、StreamReader(string str, bool k),如果想让程序自动判断何种编码,那就k传true,通过查看流的前三个字节来监测编码。

    4、StreamReader(string str,Encoding encoding, bool k,int bufferSize),最后一个参数是缓冲区大小

    还有另外六个构造函数

    二、重要属性

    1、BaseStream,将上述的构造函数使用的流对象,重新提取出来。

    FileStream fs = new FileStream ( "D:\\TextReader.txt", FileMode.Open , FileAccess.Read ) ;
     StreamReader sr= new StreamReader ( fs ) ; 
     //本例中的BaseStream就是
    FileStream
    sr.BaseStream.Seek (0 , SeekOrigin.Begin ) ;

    2、CurrentEncoding获取当前StreamReader的Encoding

    3、EndOfStream 判断StreamReader是否已经出去当前流的末尾

    三、实例

    View Code
     1 static void Main(string[] args)
     2         {
     3            
     4             //文件地址
     5             string txtFilePath="D:\\TextReader.txt";
     6             //定义char数组
     7             char[] charBuffer2 = new char[3];
     8 
     9             //利用FileStream类将文件文本数据变成流然后放入StreamReader构造函数中
    10             using(FileStream stream = File.OpenRead(txtFilePath))
    11             {
    12                 using (StreamReader reader = new StreamReader(stream))
    13                 {
    14                     //StreamReader.Read()方法
    15                     DisplayResultStringByUsingRead(reader);
    16                 }
    17             }
    18 
    19             using (FileStream stream = File.OpenRead(txtFilePath))
    20             {
    21                 //使用Encoding.ASCII来尝试下
    22                 using (StreamReader reader = new StreamReader(stream,Encoding.ASCII,false))
    23                 {
    24                     //StreamReader.ReadBlock()方法
    25                     DisplayResultStringByUsingReadBlock(reader);
    26                 }
    27             }
    28 
    29             //尝试用文件定位直接得到StreamReader,顺便使用 Encoding.Default
    30             using(StreamReader reader = new StreamReader(txtFilePath, Encoding.Default,false,123))
    31             {
    32                //StreamReader.ReadLine()方法
    33               DisplayResultStringByUsingReadLine(reader);
    34             }
    35 
    36             //也可以通过File.OpenText方法直接获取到StreamReader对象
    37             using (StreamReader reader = File.OpenText(txtFilePath)) 
    38             {
    39                 //StreamReader.ReadLine()方法
    40                 DisplayResultStringByUsingReadLine(reader);
    41             }
    42 
    43             Console.ReadLine();
    44         }
    45 
    46         /// <summary>
    47         /// 使用StreamReader.Read()方法
    48         /// </summary>
    49         /// <param name="reader"></param>
    50         public static  void DisplayResultStringByUsingRead(StreamReader reader) 
    51         {
    52             int readChar = 0;
    53             string result = string.Empty;
    54             while ((readChar=reader.Read()) != -1) 
    55             {
    56                 result += (char)readChar;
    57             }
    58             Console.WriteLine("使用StreamReader.Read()方法得到Text文件中的数据为 : {0}", result);
    59         }
    60 
    61         /// <summary>
    62         /// 使用StreamReader.ReadBlock()方法
    63         /// </summary>
    64         /// <param name="reader"></param>
    65         public static void DisplayResultStringByUsingReadBlock(StreamReader reader)
    66         {
    67             char[] charBuffer = new char[10];
    68             string result = string.Empty;
    69             reader.ReadBlock(charBuffer,0,10);
    70             for (int i = 0; i < charBuffer.Length; i++)
    71             {
    72                 result += charBuffer[i];
    73             }
    74             Console.WriteLine("使用StreamReader.ReadBlock()方法得到Text文件中前10个数据为 : {0}", result);
    75         }
    76 
    77 
    78         /// <summary>
    79         /// 使用StreamReader.ReadLine()方法
    80         /// </summary>
    81         /// <param name="reader"></param>
    82         public static void DisplayResultStringByUsingReadLine(StreamReader reader)
    83         {
    84             int i=1;
    85             string resultString = string.Empty;
    86             while ((resultString=reader.ReadLine() )!= null)
    87             {
    88                 Console.WriteLine("使用StreamReader.Read()方法得到Text文件中第{1}行的数据为 : {0}", resultString, i);
    89                 i++;
    90             }
    91             
    92         }
  • 相关阅读:
    mysql慢查询日志功能的使用
    回顾JavsScript对象的克隆
    JavaScript的几种继承方式
    再谈JavaScript中的闭包
    重温JavaScript预编译的四个步骤
    PHP常用设计模式
    编译 php-memcache 扩展时提示Cannot find autoconf
    CentOS 7 下编译安装lnmp之PHP篇详解
    CentOS 7 下编译安装lnmp之MySQL篇详解
    MySQL的转义符 ` 作用
  • 原文地址:https://www.cnblogs.com/xyang/p/2487686.html
Copyright © 2011-2022 走看看