文章

第15天:檔案操作

課程簡介

今天,我們將學習 檔案操作,包括如何在 C# 中使用 .NET 提供的 System.IO 命名空間,來建立、讀取、寫入和刪除檔案。檔案操作是程式開發中的一個重要部分,允許您在應用程式中存儲和管理資料。本課程將介紹如何使用 C# 來處理各種檔案操作,使您能夠輕鬆地在應用程式中讀取和寫入檔案。


學習目標

  • 瞭解 System.IO 命名空間及其常用類別
  • 學習如何建立、讀取、寫入和刪除檔案
  • 掌握檔案操作中的錯誤處理
  • 實作簡單的檔案操作練習

課程內容

1. 檔案操作中的 System.IO 命名空間

System.IO 是 .NET 提供的一個命名空間,包含了一系列用於檔案和目錄操作的類別,如 FileFileInfoDirectoryDirectoryInfoStreamReaderStreamWriter

  • FileDirectory 類別提供靜態方法,適合進行簡單的檔案和目錄操作。
  • FileInfoDirectoryInfo 類別提供了實例方法,適合更高級的檔案操作。
  • StreamReaderStreamWriter 是專門用於讀取和寫入文字檔案的類別。

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.WriteAllTextStreamWriter 可以將文字寫入檔案中。

範例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.ReadAllTextStreamReader 可以讀取檔案中的內容。

範例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 區塊允許您處理特定的例外情況,以防止程式崩潰。


實作練習

  1. 建立並寫入檔案
    • 建立一個名為 notes.txt 的檔案,並寫入一些個人筆記。
    1
    2
    3
    4
    5
    
    string path = "notes.txt";
    string content = "今天學會了如何使用 C# 操作檔案。";
    
    File.WriteAllText(path, content);
    Console.WriteLine("筆記已儲存到 notes.txt。");
    
  2. 讀取檔案並顯示內容
    • 讀取 notes.txt 檔案並顯示其內容。
    1
    2
    3
    
    string content = File.ReadAllText("notes.txt");
    Console.WriteLine("筆記內容:");
    Console.WriteLine(content);
    
  3. 追加檔案內容
    • 追加一行新文字到 notes.txt 檔案。
    1
    2
    3
    4
    5
    
    using (StreamWriter writer = File.AppendText("notes.txt"))
    {
        writer.WriteLine("明天將學習 C# 中的進階檔案操作。");
    }
    Console.WriteLine("內容已追加到 notes.txt。");
    
  4. 刪除檔案
    • 刪除 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 授權