在 C# 中,讀取與寫入檔案的方式有很多種,最常見的是使用 StreamReader
和 StreamWriter
類別,也可以直接使用 File
類別,讓程式碼更簡潔。
StreamReader 和 File 類別的差異
一般會用 StreamReader 類別 讀取文字檔:
string path = "xxx";
using (StreamReader reader = new StreamReader(path))
{
txtEditor.Text = reader.ReadToEnd();
}
也可以改用 File 類別 讀取文字檔內容:
string path = "xxx";
txtEditor.Text = File.ReadAllText(path);
使用 File 類別讀取和寫入檔案內容,使用上和 StreamReader
/ StreamWriter
沒有差異,但可以撰寫更少的程式碼 (連釋放資源都一起處理了)。
如果有需要自訂的讀取動作,就很適合用 StreamReader
,例如在讀取時減少記憶體占用,可以讓 StreamReader
一次只讀幾個 Byte,不用像 File.ReadAllText
一次讀取所有內容。
常用的 File 方法
方法 | 描述 |
---|---|
WriteAllText |
寫入整個文字內容到檔案(會覆蓋) |
AppendAllText |
將文字加到檔案結尾 |
ReadAllText |
讀取文字檔的所有資料 |
Exists |
檢查檔案是否存在 |
範例程式碼
using System;
using System.IO;
public class Program
{
public static void Main()
{
string path = "sample.txt";
// 1. 檢查檔案是否存在
if (!File.Exists(path))
{
Console.WriteLine("檔案不存在,建立新檔案...");
File.WriteAllText(path, "這是檔案的第一行。\n");
}
else
{
Console.WriteLine("檔案已存在。");
}
// 2. 讀取檔案內容
Console.WriteLine("\n目前檔案內容:");
string content = File.ReadAllText(path);
Console.WriteLine(content);
// 3. 覆蓋寫入新內容
Console.WriteLine("\n覆蓋寫入新內容...");
File.WriteAllText(path, "覆蓋後的第一行。\n");
// 4. 附加新內容
Console.WriteLine("附加新內容...");
File.AppendAllText(path, "這是附加的新行。\n");
// 5. 再次讀取檔案內容
Console.WriteLine("\n更新後的檔案內容:");
string updatedContent = File.ReadAllText(path);
Console.WriteLine(updatedContent);
}
}
結果為:
檔案不存在,建立新檔案...
目前檔案內容:
這是檔案的第一行。
覆蓋寫入新內容...
附加新內容...
更新後的檔案內容:
覆蓋後的第一行。
這是附加的新行。