|
|
|
|
|
在本教程中,你將了解 System.IO
,它是一個 C# 命名空間。此命名空間提供 C# 類(例如 FileStream
、StreamWriter
、StreamReader
)來處理文件 I/O。
文件基本上是存儲在內(nèi)存中特定給定目錄中的系統(tǒng)對象,具有適當?shù)拿Q和擴展名。在 C# 中,如果我們將文件用于寫入或讀取數(shù)據(jù),我們將其稱為流。
在本教程中,我們將研究用于從給定文件檢索數(shù)據(jù)的輸入流和用于將數(shù)據(jù)放入文件的輸出流。
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 文件。
在我們之前的例子中,我們學習了如何寫入文件,現(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# StreamReader
StreamReader
用于從文件中讀取字符串或大句子。StreamReader
還使用 TextReader
類作為其基類,然后提供 Reading
和 ReadLine
等方法來從流中讀取數(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();
}
}
}
這里我們使用 FileStream
從 StreamReader
創(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# TextReader
TextReader
是 System.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
包含幾個類,如 FileStream
、StreamReader
、StreamWriter
、TextReader
、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)文章