創建資料夾
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 進行動態設置,以反映實際結果。 |
這些延伸狀況都可以為刪除資料夾的功能提供額外的防護措施,並提升使用者體驗。
物件的命名規則可以是:
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;
}
}