創建資料夾

    private void button1_Click(object sender, EventArgs e)
    {
        //using System.IO;
        Directory.CreateDirectory(@"c:\\\\TEMP\\\\test123\\\\test456\\\\test789");
        //可以直接創建
    }

        //Directory.Delete(@"C:\\\\temp\\\\test123\\\\");
        ////目錄不是空的,裡面有東西會不能刪
        ///
        //Directory.Delete(@"c:\\\\TEMP\\\\test123\\\\test456\\\\test789");
        //第二次會是找不到路徑,所以要用判斷包裝

        //Directory.Delete(@"c:\\\\TEMP\\\\test123\\\\test456\\\\test789");
        ////如果要確認資料夾是否存在呢?
        //(sender as Button).Text = "OK";

        //解法
        if (Directory.Exists(@"c:\\\\TEMP\\\\test123\\\\test456\\\\test789"))//Directory.Exists
        {
            Directory.Delete(@"c:\\\\TEMP\\\\test123\\\\test456\\\\test789");
            (sender as Button).Text = "OK";

若要確認資料夾是否存在,可以在刪除操作前使用 Directory.Exists 方法進行檢查,這樣可以避免因目錄不存在而引發的例外。以下是應用範例:

if (Directory.Exists(@"c:\\\\TEMP\\\\test123\\\\test456\\\\test789"))
{
    Directory.Delete(@"c:\\\\TEMP\\\\test123\\\\test456\\\\test789");
    (sender as Button).Text = "OK";
}
else
{
    (sender as Button).Text = "Directory Not Found";
}

這段程式碼會首先檢查指定路徑的資料夾是否存在;若存在,則刪除該資料夾並將按鈕文字設為 "OK"。如果資料夾不存在,則按鈕文字將顯示 "Directory Not Found"。這樣能有效地避免 Directory.Delete 遇到不存在的目錄而拋出異常。

這個題型還可以延伸到許多其他可能的使用者狀況。以下是一些可能的延伸需求或情境,每一個都可以有不同的檢查條件或操作:

使用者狀況 描述 處理方式
資料夾不存在但要自動建立 若資料夾不存在,則先建立目錄,而非直接結束操作。 使用 Directory.CreateDirectory() 方法,然後再執行其他操作。
資料夾內有檔案時進行確認 確認資料夾內是否包含檔案,如果有則給出提示,以避免誤刪重要文件。 可用 Directory.GetFiles() 檢查是否有檔案,若有則顯示訊息提醒使用者。
檢查資料夾的訪問權限 使用者可能沒有該資料夾的訪問權限,這會導致例外狀況。 使用 try-catch 捕捉 UnauthorizedAccessException,並顯示適當訊息。
資料夾使用中時無法刪除 當資料夾被其他程式使用中時,刪除會導致錯誤。 捕捉 IOException,顯示「資料夾被佔用中,請稍後再試」的訊息。
確認資料夾是否為空 當資料夾包含子目錄或檔案時,允許選擇是否遞迴刪除或僅刪除特定內容。 使用 Directory.GetFiles()Directory.GetDirectories() 確認是否有內容,再依使用者選擇是否遞迴刪除。
備份資料夾內容再刪除 使用者可能希望保留備份,以防誤刪。 將檔案複製到指定備份路徑,然後刪除原始資料夾。
自定義訊息顯示 根據不同情況顯示具體的操作結果(如:已刪除、目錄不存在、訪問被拒等)。 使用不同條件對 Button.Text 進行動態設置,以反映實際結果。

這些延伸狀況都可以為刪除資料夾的功能提供額外的防護措施,並提升使用者體驗。

物件的命名規則可以是:

  1. 類別的簡寫(DirectoryInfo ⇒ di)
  2. 類別前面加物件(DirectoryInfo ⇒ objDiretoryInfo)
  3. 物件前面加一個a(aDirectoryInfo)

image.png

       private void button3_Click(object sender, EventArgs e) {
            DirectoryInfo aDirectoryInfo = new DirectoryInfo(@"c:\\temp");
            textBox1.Text = aDirectoryInfo.LastWriteTime.ToString() + "\\r\\n";
 
            FileInfo[] fileList = aDirectoryInfo.GetFiles(
                "*.txt", SearchOption.AllDirectories);
            foreach (FileInfo file in fileList) {
                string line = $"{file.FullName} \\r\\n";
                textBox1.Text += line;
            }
        }