HOWTO · Csharp

如何在 C# 中重新命名檔案

本文介紹瞭如何在 C# 中重新命名一個檔案。它包括 Move()方法和 Copy()方法。

本頁內容

在 C# 中,重新命名檔案就是將檔案移至新路徑。若原始檔案不應再留在舊路徑,請使用 File.Move。若要以新名稱建立另一個檔案,同時保留原始檔案,請使用 File.Copy。這兩種操作都需要來源路徑和目的地路徑,因此若只要變更檔名,請將同一個目錄與新檔名組合成目的地路徑。

以下範例會自行建立暫存檔案,方便你依照應用程式調整路徑設定。提供的執行檢查顯示,兩個範例都成功完成,且不會輸出至主控台。

使用 File.Move 重新命名檔案

File.Move 會將檔案從來源路徑移至目的地路徑。若要在同一個目錄中重新命名,請讓目的地路徑使用該目錄和新檔名。移動成功後,檔案會位於目的地,不再存在於來源路徑。

以下完整程式會建立暫存來源檔案,將它移至同一個目錄中的新名稱,並在完成後移除暫存目錄:

本節中的程式碼以及顯示的標籤或輸出仍為英文。

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string directory = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
        Directory.CreateDirectory(directory);
        string sourcePath = Path.Combine(directory, "old-name.txt");
        string destinationPath = Path.Combine(directory, "new-name.txt");

        try
        {
            File.WriteAllText(sourcePath, "Example content");
            File.Move(sourcePath, destinationPath);
        }
        finally
        {
            Directory.Delete(directory, true);
        }
    }
}

來源檔案必須存在,而且目的地路徑必須可用。若目的地位於另一個目錄,這項操作除了變更檔名,也會將檔案移至該目錄。因此,當舊路徑不應再指向該檔案時,File.Move 就很適合;它不會留下第二份副本。

使用 File.Copy 建立重新命名後的副本

若要保留原始檔案,並同時留下使用新名稱的檔案,請選擇 File.Copy。第一個引數是現有的來源檔案;第二個引數是要建立副本的位置。若要建立類似重新命名的副本,目的地可以使用同一個目錄;若副本應放在其他位置,也可以使用不同目錄。

以下完整程式會建立暫存來源檔案,將它複製成新檔名,然後連同所在目錄一起清除這兩個檔案:

本節中的程式碼以及顯示的標籤或輸出仍為英文。

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string directory = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
        Directory.CreateDirectory(directory);
        string sourcePath = Path.Combine(directory, "old-name.txt");
        string destinationPath = Path.Combine(directory, "new-name.txt");

        try
        {
            File.WriteAllText(sourcePath, "Example content");
            File.Copy(sourcePath, destinationPath);
        }
        finally
        {
            Directory.Delete(directory, true);
        }
    }
}

複製成功後,來源檔案會留在原路徑,新檔案則位於目的地。當需要保留原始檔案時,例如要將它作為備份或另一項操作的輸入,這種方式就很實用。請記得,複製會額外占用儲存空間,而且之後修改其中一個檔案,不會自動更新另一個檔案。

處理路徑與已存在的目的地檔案

路徑必須使用有效的 C# 字串。例如,逐字字串 @"C:\\example\\old-name.txt" 可避免反斜線被當作跳脫字元;Path.Combine 則是從目錄和檔名組合路徑的另一種實用方式。範例程式會搭配暫存目錄使用 Path.Combine,因此不依賴特定磁碟機或現有資料夾。在應用程式中,請選擇程序有權存取的目錄,並在必要時確認其上層目錄已存在。

來源檔案必須存在,這兩種操作才能成功。檔名拼錯、工作目錄與預期不同,或路徑指向不存在的資料夾,都可能導致操作失敗。請盡可能使用已知的目錄值組合路徑,並在變更檔案前確認來源檔案是你打算移動或複製的檔案。

在預設情況下,File.Move 和 File.Copy 都不會覆寫已存在的目的地檔案。如果目的地名稱可能已被使用,請改用其他名稱,或在呼叫操作前處理這種情況。覆寫多載的可用性或行為取決於目標架構;若要使用多載,請先查閱應用程式所採用架構的文件。不要假設重新命名會在沒有提示的情況下取代現有檔案。

簡而言之,使用 File.Move 可將單一檔案移至新路徑;使用 File.Copy 則會在保留來源檔案的同時,另外建立一份副本。應選擇哪種方式,取決於原始路徑是否應繼續存有原始檔案。