日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

c#文件操作Streamwriter, streamreader的使用

發(fā)布時(shí)間:2023/12/18 C# 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c#文件操作Streamwriter, streamreader的使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  • 網(wǎng)上看到的覺得值得學(xué)習(xí)所以保存下來供以后參考
  • c文件操作
  • C使用StreamWriter類寫入文件文件
  • C使用StreamReader類讀取文件文件
  • 網(wǎng)上看到的,覺得值得學(xué)習(xí),所以保存下來供以后參考

    c#文件操作

    C#使用StreamWriter類寫入文件文件

    除了使用FileStream類讀寫文本文件,.net還提供了StreamWriter類和StreamReader類專門處理文本文件。這兩個(gè)類從底層封裝了文件流,讀寫時(shí)不用重新編碼,提供了更文件的讀寫方式。

    StreamWriter類允許將字符和字符串寫入到文件中,不必轉(zhuǎn)換為字節(jié),它處理底層的轉(zhuǎn)換,向FileStream對(duì)象寫入數(shù)據(jù)。

    一、創(chuàng)建StreamWrite對(duì)象

    如果已經(jīng)有了FileStream對(duì)象,則可以使用此對(duì)象來創(chuàng)建StreamWriter對(duì)象:

    FileStream fs = new FileStream("test.txt",FileMode.CreateNew);
    StreamWriter sw = new StreamWriter(fs);

    也可以直接從文件中創(chuàng)建StreamWriter對(duì)象:

    StreamWriter sw = new StreamWriter("test.txt",true);

    此構(gòu)造函數(shù)中有兩個(gè)參數(shù),一個(gè)是文件名,另一個(gè)是布爾值,這個(gè)布爾值規(guī)定創(chuàng)建對(duì)象的方式如下:

    如果此值為false,則創(chuàng)建一個(gè)新文件,如果存在原文件,則覆蓋。
    如果此值為true,則打開文件保留原來數(shù)據(jù),如果找不到文件,則創(chuàng)建新文件。

    與 創(chuàng)建FileStream對(duì)象不同,創(chuàng)建StreamWriter對(duì)象不會(huì)提供一組類似的選項(xiàng):除了使用Boolean值添加到文件的末尾或創(chuàng)建新文件之 外,根本沒有像FileStream類那樣指定FileMode屬性的選項(xiàng)。而且,沒有設(shè)置FileAccess屬性的選項(xiàng),因此總是有對(duì)文件的讀/寫權(quán) 限。為了使用高級(jí)參數(shù),必須先在FileStream構(gòu)造函數(shù)中指定這些參數(shù),然后在FileStream對(duì)象中創(chuàng)建StreamWriter。

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    class Program
    {
    static void Main(string[]args)
    {
    ???try
    ???{
    ????FileStream aFile = new FileStream(@"c:\123\歡迎.txt", FileMode.OpenOrCreate);
    ????StreamWriter sw = new StreamWriter(aFile);
    ????sw.WriteLine("為今后我們之間的進(jìn)一步合作,");
    ????sw.WriteLine("為我們之間日益增進(jìn)的友誼,");
    ????sw.Write("為朋友們的健康幸福,");
    ????sw.Write("干杯!朋友!");
    ????sw.Close();
    ???}
    ???catch (IOException ex)
    ???{
    ????Console.WriteLine(ex.Message);
    ????Console.ReadLine();
    ????return ;
    ???}
    }
    }

    編譯并運(yùn)行該項(xiàng)目。如果沒有發(fā)現(xiàn)錯(cuò)誤,則項(xiàng)目會(huì)很快運(yùn)行,并關(guān)閉。因?yàn)槲覀冊(cè)诳刂婆_(tái)上沒有顯示任何內(nèi)容,所以在控制臺(tái)中無法看到程序的執(zhí)行情況。

    這個(gè)簡單的應(yīng)用程序演示了StreamWriter類的兩個(gè)最重要的方法:Write()和WriteLine()。這兩個(gè)方法具有許多重載的版本,可以完成更高級(jí)的文件輸出,但是本示例只使用基本的字符串輸出。

    WriteLine()方法會(huì)寫入傳遞給它的字符串,其后跟有換行符。

    Write()方法只是把傳送給它的字符串寫入文件,但不追加換行符,因此可以使用多個(gè)Write()語句寫入完整的句子或段落。

    注意:如果路徑不存在,會(huì)拋出異常,當(dāng)然我們這個(gè)程序捕獲了異常。

    ?

    ?

    C#使用StreamReader類讀取文件文件

    輸入流用于從外部源讀取數(shù)據(jù)。在很多情況下,數(shù)據(jù)源是磁盤上的文件或網(wǎng)絡(luò)的某些位置。任何可以發(fā)送數(shù)據(jù)的位置都可以是數(shù)據(jù)源,比如網(wǎng)絡(luò)應(yīng)用程序、Web服務(wù),甚至是控制臺(tái)。

    用來從文件中讀取數(shù)據(jù)的類是StreamReader。同StreamWriter一樣,這是一個(gè)通用類,可以用于任何流。

    StreamReader對(duì)象的創(chuàng)建方式非常類似于StreamWriter對(duì)象。創(chuàng)建它的最常見方式是使用前面創(chuàng)建的FileStream對(duì)象:

    FileStream fs = new FileStream("test.txt",FileMode.Open);
    StreamReader sr = new StreamReader(fs);

    同StreamWriter一樣,StreamReader類可以直接在包含具體文件路徑的字符串中創(chuàng)建:

    StreamReader sr = new StreamReader("test.txt");

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    class Program
    {
    static void Main(string[]args)
    {
    ???try
    ???{
    ????FileStream aFile = new FileStream(@"c:\祝福.txt", FileMode.Open);
    ????StreamReader sr = new StreamReader(aFile);
    ????string strLine = sr.ReadLine();
    ????while(strLine != null)
    ????{
    ?????Console.WriteLine(strLine);
    ?????strLine = sr.ReadLine();
    ????}
    ????sr.Close();
    ???}
    ???catch (IOException ex)
    ???{
    ????Console.WriteLine(ex.Message);
    ????Console.ReadLine();
    ????return ;
    ???}
    Console.ReadKey();

    }
    }

    FileStream構(gòu)造函數(shù)找不到該文件,就會(huì)拋出異常。

    這個(gè)應(yīng)用程序非常類似于前面的應(yīng)用程序。其明顯的區(qū)別就是,它是在讀取數(shù)據(jù),而不是寫入數(shù)據(jù)。同前面一樣,必須導(dǎo)入System.IO命名空間,才能訪問需要的類。

    使 用ReadLine()方法從文件中讀取文本。這個(gè)方法讀取回車符之前的文本,并以字符串的形式返回結(jié)果文本。當(dāng)?shù)竭_(dá)文件尾時(shí),該方法就返回空值,通過這 種方法可以測試文件是否已到達(dá)了尾部。注意使用while循環(huán)時(shí),在執(zhí)行循環(huán)體的代碼之前進(jìn)行檢查,確保讀取的行不為空,這樣就只顯示文件的有效內(nèi)容:

    strLine = sr.ReadLine();
    while(strLine != null)
    {
    ???Console.WriteLine(strLine);
    ???strLine = sr.ReadLine();
    }

    ReadLine()方法不是在文件中訪問數(shù)據(jù)的惟一方法。StreamReader類還有許多讀取數(shù)據(jù)的方法。

    讀取數(shù)據(jù)最簡單的方法是Read()。此方法將流的下一個(gè)字符作為正整數(shù)值返回,如果到達(dá)了流的結(jié)尾處,則返回–1。使用Convert實(shí)用類可以把這個(gè)值轉(zhuǎn)換為字符。在上面的示例中,程序的主體可以按如下方式編寫:

    StreamReader sr = new StreamReader(aFile);
    int nChar;
    nChar = sr.Read();
    while(nChar != -1)
    {
    ???Console.Write(Convert.ToChar(nChar));
    ???nChar = sr.Read();
    }
    sr.Close();

    對(duì)于小型文件,可以使用一個(gè)非常方便的方法,即ReadToEnd()方法。此方法讀取整個(gè)文件,并將其作為字符串返回。在此,前面的應(yīng)用程序可以簡化為:

    StreamReader sr = new StreamReader(aFile);
    strLine = sr.ReadToEnd();
    Console.WriteLine(strLine);
    sr.Close();

    這似乎非常容易和方便,但必須小心。將所有的數(shù)據(jù)讀取到字符串對(duì)象中,會(huì)迫使文件中的數(shù)據(jù)放到內(nèi)存中。應(yīng)根據(jù)數(shù)據(jù)文件的大小禁止這樣處理。如果數(shù)據(jù)文件非常大,最好將數(shù)據(jù)留在文件中,并使用StreamReader的方法訪問文件。

    總結(jié)

    以上是生活随笔為你收集整理的c#文件操作Streamwriter, streamreader的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。