第15天:檔案操作
課程簡介
今天,我們將學習 檔案操作,包括如何在 C# 中使用 .NET 提供的 System.IO
命名空間,來建立、讀取、寫入和刪除檔案。檔案操作是程式開發中的一個重要部分,允許您在應用程式中存儲和管理資料。本課程將介紹如何使用 C# 來處理各種檔案操作,使您能夠輕鬆地在應用程式中讀取和寫入檔案。
學習目標
- 瞭解
System.IO
命名空間及其常用類別 - 學習如何建立、讀取、寫入和刪除檔案
- 掌握檔案操作中的錯誤處理
- 實作簡單的檔案操作練習
課程內容
1. 檔案操作中的 System.IO
命名空間
System.IO
是 .NET 提供的一個命名空間,包含了一系列用於檔案和目錄操作的類別,如 File
、FileInfo
、Directory
、DirectoryInfo
、StreamReader
和 StreamWriter
。
- File 和 Directory 類別提供靜態方法,適合進行簡單的檔案和目錄操作。
- FileInfo 和 DirectoryInfo 類別提供了實例方法,適合更高級的檔案操作。
- StreamReader 和 StreamWriter 是專門用於讀取和寫入文字檔案的類別。
2. 建立檔案
在 C# 中,可以使用 File.Create
方法來建立檔案。這個方法會返回一個 FileStream
物件,讓您可以進一步操作該檔案。
範例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
using System.IO;
class Program
{
static void Main()
{
string path = "example.txt";
// 檢查檔案是否已存在,如果不存在則建立新檔案
if (!File.Exists(path))
{
File.Create(path).Close();
Console.WriteLine("檔案已建立:" + path);
}
else
{
Console.WriteLine("檔案已存在。");
}
}
}
3. 寫入檔案
使用 File.WriteAllText
或 StreamWriter
可以將文字寫入檔案中。
範例1:使用 File.WriteAllText
寫入文字
1
2
3
4
5
string path = "example.txt";
string content = "Hello, C# 檔案操作!";
File.WriteAllText(path, content);
Console.WriteLine("內容已寫入檔案。");
範例2:使用 StreamWriter
寫入多行文字
1
2
3
4
5
6
using (StreamWriter writer = new StreamWriter("example.txt"))
{
writer.WriteLine("第一行文字");
writer.WriteLine("第二行文字");
}
Console.WriteLine("多行內容已寫入檔案。");
在此範例中,我們使用 StreamWriter
寫入多行文字,並且將 StreamWriter
放在 using
語句中,以確保檔案在使用後被自動關閉。
4. 讀取檔案
使用 File.ReadAllText
或 StreamReader
可以讀取檔案中的內容。
範例1:使用 File.ReadAllText
讀取檔案內容
1
2
3
4
5
string path = "example.txt";
string content = File.ReadAllText(path);
Console.WriteLine("檔案內容:");
Console.WriteLine(content);
範例2:使用 StreamReader
逐行讀取
1
2
3
4
5
6
7
8
using (StreamReader reader = new StreamReader("example.txt"))
{
string line;
while ((line = reader.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
在此範例中,StreamReader
提供了一種逐行讀取檔案內容的方式,使您可以處理大型檔案而不會將所有內容載入記憶體。
5. 刪除檔案
使用 File.Delete
可以刪除檔案。
範例:
1
2
3
4
5
6
7
8
9
10
11
string path = "example.txt";
if (File.Exists(path))
{
File.Delete(path);
Console.WriteLine("檔案已刪除:" + path);
}
else
{
Console.WriteLine("檔案不存在。");
}
此範例檢查檔案是否存在,如果存在則將其刪除。
6. 檔案操作中的錯誤處理
檔案操作過程中可能會出現許多錯誤,如檔案未找到、無權限存取等。為此,我們可以使用 try-catch
來處理異常。
範例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
try
{
string path = "example.txt";
string content = File.ReadAllText(path);
Console.WriteLine(content);
}
catch (FileNotFoundException e)
{
Console.WriteLine("檔案未找到:" + e.Message);
}
catch (UnauthorizedAccessException e)
{
Console.WriteLine("無權限存取檔案:" + e.Message);
}
catch (Exception e)
{
Console.WriteLine("發生錯誤:" + e.Message);
}
在此範例中,try-catch
區塊允許您處理特定的例外情況,以防止程式崩潰。
實作練習
- 建立並寫入檔案
- 建立一個名為
notes.txt
的檔案,並寫入一些個人筆記。
1 2 3 4 5
string path = "notes.txt"; string content = "今天學會了如何使用 C# 操作檔案。"; File.WriteAllText(path, content); Console.WriteLine("筆記已儲存到 notes.txt。");
- 建立一個名為
- 讀取檔案並顯示內容
- 讀取
notes.txt
檔案並顯示其內容。
1 2 3
string content = File.ReadAllText("notes.txt"); Console.WriteLine("筆記內容:"); Console.WriteLine(content);
- 讀取
- 追加檔案內容
- 追加一行新文字到
notes.txt
檔案。
1 2 3 4 5
using (StreamWriter writer = File.AppendText("notes.txt")) { writer.WriteLine("明天將學習 C# 中的進階檔案操作。"); } Console.WriteLine("內容已追加到 notes.txt。");
- 追加一行新文字到
- 刪除檔案
- 刪除
notes.txt
檔案。
1 2 3 4 5 6 7 8 9
if (File.Exists("notes.txt")) { File.Delete("notes.txt"); Console.WriteLine("notes.txt 已刪除。"); } else { Console.WriteLine("檔案不存在。"); }
- 刪除
教學重點
- 熟悉
System.IO
命名空間中常用的類別和方法。 - 學會建立、讀取、寫入和刪除檔案。
- 掌握在檔案操作中使用錯誤處理來處理常見的例外情況。
在下一節中,我們將學習 檔案和目錄操作進階,深入了解目錄操作及如何處理多個檔案。
本文章以 CC BY 4.0 授權