c# TextReader/TextWriter 的類

來源:互聯網
上載者:User

標籤:style   blog   http   color   java   使用   os   for   資料   

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();        }

c# TextReader/TextWriter 的類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.