常常會用到對作業系統進行建立資料夾或是刪除資料動作,所謂,程式寫完超過三個月就會忘記,真的是一點都沒錯。為了避免每次自己都還要去查一下MSDN來做回憶。這邊把一些相關基礎做法做一個筆記,日後也可以比較容易查閱
首先需要加入這個using System.IO
Namespace
判斷目錄是否存在
可以使用DirectoryInfo
這個Class進行處理。這案例是我們判斷在C槽下是否有存在Temp目錄,用exists
屬性來判斷,路徑的表示法C#與VB有所不同,請自行查閱。
DirectoryInfo : 公開建立、移動和全面列舉目錄和子目錄的執行個體 (Instance)方法
1 2 3 4 5 6 7 8 9 10
| string strFolderPath = @"C:\temp\"; DirectoryInfo DIFO = new DirectoryInfo(strFolderPath); if (DIFO.Exists) { Console.WriteLine("Exist"); } else { Console.WriteLine("No Exist"); }
|
在C槽已經存在Temp目錄所以或出現Exist,其中路徑無論是寫 @”C:\temp\” 或是 @”C:\temp” 其結果都是相同的
建立目錄
使用Create
的方法來建立,若是該目錄已經存在則不會有所動作
1 2 3
| string strFolderPath = @"C:\temp\test1"; DirectoryInfo DIFO = new DirectoryInfo(strFolderPath); DIFO.Create();
|
若是我們要在該目錄下,不斷建立該目錄的子目錄,不需要重複寫上面那一段Code然後把路徑置換,只需要使用CreateSubdirectory
方法就可以
1 2 3 4
| string strFolderPath = @"C:\temp\test1\"; DirectoryInfo DIFO = new DirectoryInfo(strFolderPath); DirectoryInfo ss = DIFO.CreateSubdirectory("GG"); DirectoryInfo sq = ss.CreateSubdirectory("FF");
|
這樣就可以在test1目錄下面建立GG目錄,在GG目錄下建立FF目錄了
刪除目錄
使用Delete
的方法來刪除
1 2 3
| string strFolderPath = @"C:\temp\test1\"; DirectoryInfo DIFO = new DirectoryInfo(strFolderPath); DIFO.Delete();
|
不過,這邊有一個重點,若是該目錄不是空的,執行這樣語法會出現錯誤,早期的作法可能需要將資料目錄先清空再去刪除,不過,現在已經不需要這樣麻煩,只需要在Delete
中傳入,是否要一併刪除該資料內所有檔案或是目錄就可以,True是表示要刪除該資料夾下所有資料,False則反之。
1 2 3
| string strFolderPath = @"C:\temp\test1\"; DirectoryInfo DIFO = new DirectoryInfo(strFolderPath); DIFO.Delete(true);
|
補充一下,取得該資料夾所有檔案的方式,藉由FileInfo
取檔案名稱
1 2 3 4
| foreach (FileInfo di in DIFO.GetFiles()) { Console.WriteLine(di.FullName); }
|
若是找到目錄就移除該目錄,並重新建立目錄方式
1 2 3 4 5 6 7 8 9 10
| string strFolderPath = @"C:\temp\"; DirectoryInfo DIFO = new DirectoryInfo(strFolderPath); if (DIFO.Exists) { DIFO.Delete(true); } else { DIFO.Create(); }
|