技術(shù)頻道導航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務器技術(shù)
操作系統(tǒng)
網(wǎng)站運營

贊助商

分類目錄

贊助商

最新文章

搜索

C# FileStream、StreamWriter、StreamReader、TextWriter、TextReader

作者:admin    時間:2023-6-13 12:29:23    瀏覽:

在本教程中,你將了解 System.IO,它是一個 C# 命名空間。此命名空間提供 C# 類(例如 FileStreamStreamWriter、StreamReader)來處理文件 I/O。

文件基本上是存儲在內(nèi)存中特定給定目錄中的系統(tǒng)對象,具有適當?shù)拿Q和擴展名。在 C# 中,如果我們將文件用于寫入或讀取數(shù)據(jù),我們將其稱為流。

在本教程中,我們將研究用于從給定文件檢索數(shù)據(jù)的輸入流和用于將數(shù)據(jù)放入文件的輸出流。

 C# FileStream、StreamWriter、StreamReader、TextWriter、TextReader

C# FileStream

System.IO 是 C# 中存在的命名空間,它包含可用于對給定流執(zhí)行不同操作的類,例如創(chuàng)建、編輯和從給定文件檢索數(shù)據(jù)。

FileStream 提供了執(zhí)行文件操作的路徑。它主要用于讀取和寫入數(shù)據(jù)到文件中。

寫入文件的示例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
FileStream f = new FileStream("d:\\b.txt", FileMode.OpenOrCreate);
            Console.WriteLine("File opened");    
            f.WriteByte(70);
            Console.WriteLine("Data written into file");
f.Close();
            Console.WriteLine("File Stream closed");
}

}

在這里,我們編寫了一個簡單的程序,使用FileStream將單字節(jié)數(shù)據(jù)寫入文件。首先,我們創(chuàng)建了一個 FileStream 對象并傳遞了文件名。然后我們將文件模式設(shè)置為打開或創(chuàng)建。在打開的文件中,我們使用 WriteByte 寫了一個字節(jié),最后,我們關(guān)閉了所有內(nèi)容。

輸出是一個只有一個字節(jié)的 txt 文件。

使用FileStream將單字節(jié)數(shù)據(jù)寫入文件 

讀取文件的例子

在我們之前的例子中,我們學習了如何寫入文件,現(xiàn)在讓我們嘗試讀取文件。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
FileStream f = new FileStream("d:\\b.txt", FileMode.OpenOrCreate);
Console.WriteLine("File opened");
char a = (char)f.ReadByte();
Console.WriteLine("Data read from file is: "+a);
f.Close();
Console.WriteLine("File Stream closed");
Console.ReadLine();
}
}
}

這里我們使用 ReadByte 從文件中讀取字節(jié)。此命令用于從文件中讀取單個字節(jié)。如果你想讀取更多數(shù)據(jù),則需要通過循環(huán)傳遞它。然后我們將它存儲到一個 char 變量中,但由于返回類型并不總是與 ReadByte 匹配,我們還為 char 添加了一個轉(zhuǎn)換。

如果我們運行該程序,將觀察到以下輸出。

輸出

File opened
Data read from file is: F
File Stream closed

C# StreamWriter

C# 中的 StreamWriter 類用于將字符寫入流。它使用 TextWriter 類作為基類,并提供將數(shù)據(jù)寫入文件的重載方法。

StreamWriter 主要用于將多個字符的數(shù)據(jù)寫入一個文件。

例子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace ConsoleApp1 {
  class Program {
    static void Main(string[] args) {
      FileStream f = new FileStream("d:\\b.txt", FileMode.OpenOrCreate);
      Console.WriteLine("File opened");
      //declared stream writer
      StreamWriter s = new StreamWriter(f);
      Console.WriteLine("Writing data to file");
      s.WriteLine("Writing data into file using stream writer");
      //closing stream writer
      s.Close();
      f.Close();
      Console.WriteLine("File Stream closed");
      Console.ReadLine();
    }
  }
}

在初始化了FileStream對象之后,我們還使用FileStream對象初始化了StreamWriter對象。然后我們使用 WriteLine 方法將單行數(shù)據(jù)寫入文件。然后我們關(guān)閉 StreamWriter,然后關(guān)閉 FileStream

以下代碼的輸出將是一個文件,其中寫入了用戶數(shù)據(jù)。

輸出

 C# StreamWriter 寫入一個文件

C# StreamReader

StreamReader 用于從文件中讀取字符串或大句子。StreamReader 還使用 TextReader 類作為其基類,然后提供 ReadingReadLine 等方法來從流中讀取數(shù)據(jù)。

讀取數(shù)據(jù)示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApp1 {
  class Program {
    static void Main(string[] args) {

      FileStream f = new FileStream("d:\\b.txt", FileMode.OpenOrCreate);

      Console.WriteLine("File opened");

      //declared stream reader
      StreamReader sr = new StreamReader(f);
      Console.WriteLine("Reading data from the file");

      string line = sr.ReadLine();

      Console.WriteLine("The data from the file is : " + line);

      //closing stream writer
      sr.Close();
      f.Close();

      Console.WriteLine("File Stream closed");

      Console.ReadLine();
    }
  }
}

這里我們使用 FileStreamStreamReader 創(chuàng)建了一個對象。然后我們使用一個簡單的ReadLine方法從文件中讀取數(shù)據(jù)。我們關(guān)閉了 StreamReader,然后關(guān)閉了 FileStream。

上面的程序產(chǎn)生了以下輸出:

輸出

File opened
Reading data from the file
The data from the file is: Writing data into file using stream writer
File Stream closed

C# TextWriter

在 C# 中,TextWriter 類被編寫為抽象類。它用于在文件中創(chuàng)建一系列連續(xù)的字符。它與StreamWriter非常相似,后者也允許用戶在文件中寫入順序字符或文本,但不需要為操作創(chuàng)建 FileStream。

了解 TextWriter 工作原理的示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApp1 {
  class Program {
    static void Main(string[] args) {
      using(TextWriter writer = File.CreateText("d:\\textFile.txt")) {
        writer.WriteLine("The first line with text writer");
      }
      Console.ReadLine();
    }
  }
}

上面的代碼類似于 StreamWriter。WriteLine 方法將數(shù)據(jù)寫入文件中。你可以在 using 語句塊中使用多個 WriteLine 方法在文件中寫入多個數(shù)據(jù)。

輸出將創(chuàng)建一個包含用戶定義文本的文本文件。

輸出

C# TextWriter 創(chuàng)建并寫入數(shù)據(jù)到文件 

C# TextReader

TextReaderSystem.IO 中的另一個類。它用于從給定文件中讀取文本或任何連續(xù)字符。

例子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApp1 {
  class Program {
    static void Main(string[] args) {
      using(TextReader txtR = File.OpenText("d:\\textFile.txt")) {

        String data = txtR.ReadToEnd();
        Console.WriteLine(data);
      }
      Console.ReadLine();
    }
  }
}

在上面的程序中,我們使用 TextReader 打開保存在特定位置的文件。然后我們聲明了一個字符串變量來存儲文件的數(shù)據(jù)。ReadToEnd 方法確保已讀取文件中的所有數(shù)據(jù)。之后,我們將數(shù)據(jù)打印到控制臺。

上述程序的輸出將是:

The first line with text writer

結(jié)論

C# 中的 System.IO 命名空間提供了各種類和方法,使程序員能夠?qū)Σ煌奈募M行讀寫操作。System.IO 包含幾個類,如 FileStreamStreamReader、StreamWriterTextReader、TextWriter 等。

所有這些類都根據(jù)需要為文件的讀寫操作提供了特定的實現(xiàn)。

代碼示例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApp1 {
  class Program {
    static void Main(string[] args) {

      FileStream f = new FileStream("d:\\b.txt", FileMode.OpenOrCreate);

      Console.WriteLine("File opened");

      f.WriteByte(70);

      Console.WriteLine("Data written into file");

      char a = (char) f.ReadByte();

      Console.WriteLine("Data read from file is: " + a);

      //declared stream writer
      StreamWriter s = new StreamWriter(f);
      Console.WriteLine("Writing data to file");

      s.WriteLine("Writing data into file using stream writer");

      //declared stream reader
      StreamReader sr = new StreamReader(f);

      Console.WriteLine("Reading data from the file");

      string line = sr.ReadLine();

      Console.WriteLine("The data from the file is : " + line);

      //closing stream 
      sr.Close();

      f.Close();

      Console.WriteLine("File Stream closed");

      using(TextWriter writer = File.CreateText("d:\\textFile.txt")) {
        writer.WriteLine("The first line with text writer");
      }
      using(TextReader txtR = File.OpenText("d:\\textFile.txt")) {

        String data = txtR.ReadToEnd();
        Console.WriteLine(data);
      }
      Console.ReadLine();
    }
  }
}

相關(guān)文章

x
  • 站長推薦
/* 左側(cè)顯示文章內(nèi)容目錄 */