uncategorized

用C#做查詢,建立及刪除檔案目錄功能

常常會用到對作業系統進行建立資料夾或是刪除資料動作,所謂,程式寫完超過三個月就會忘記,真的是一點都沒錯。為了避免每次自己都還要去查一下MSDN來做回憶。這邊把一些相關基礎做法做一個筆記,日後也可以比較容易查閱

首先需要加入這個using System.IONamespace

判斷目錄是否存在


可以使用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();
}