2012-02-18 58 views
0

我正在嘗試製作一個程序,它將搜索所有硬盤上的文件,並在找到該文件後將其刪除。但我不知道如何開始做這件事?如何搜索包含未知目錄的文件並將其刪除?

此外,我對C#的某些方面的編碼還相當陌生,有可能獲得有關如何在代碼中使用代碼的示例?如果是這樣會非常有幫助。

+0

這是我不清楚你的意思。什麼是「未知目錄」?這是否意味着我搜索了計算機上的所有磁盤?你能舉一個例子嗎? – svick 2012-02-18 03:00:07

+0

是的,這就是我的意思,我只是改變了我的帖子,以匹配你所問的 – 2012-02-18 03:04:49

回答

2

您可以使用DriveInfo.GetDrives()獲取所有驅動器。然後在每個驅動器的RootDirectory(或任何其他目錄方法遍歷驅動器)上的Directory.GetFiles()。您應該檢查每個DriveType並忽略任何只讀類型,如CDROM和受限訪問網絡驅動器。請注意,這可能需要一些時間,因此您應該向用戶提供充足的反饋。

您還應該檢查文件屬性以確保您具有寫入權限。或者至少捕獲File.Delete()可能拋出的任何異常。

+1

當進行這樣的文件操作時,除了它們之外,你應該總是失敗。如果您檢查寫入權限,則有人可能會更改您檢查和刪除操作之間的權限。或者在此期間文件可能以其他方式被刪除。 – svick 2012-02-18 08:32:59

0

聽起來像你想要搜索一些文件夾的文件。從the Directory class開始,如Directory.GetDirectories和Directory.GetFiles來查找您的文件。

+0

我將如何搜索整個硬盤的文件,而不必搜索特定的文件夾?因爲我不確定該文件在哪個文件夾中。 – 2012-02-18 03:18:49

2

是這樣的:

FileInfo[] files = Directory.GetFiles("C:\", "file.ext", SearchOption.AllDirectories);  

這不是測試的代碼,但它應該返回的FileInfo目的,一個用於在驅動器C上找到的每個文件的數組:\其中給定的名稱相匹配。指定SearchOption.AllDirectories可確保所有文件夾都被搜索到任何深度。

如果您需要搜索多個驅動器,則需要爲每個驅動器調用此驅動器,可能需要循環。

文檔在這裏:http://msdn.microsoft.com/en-us/library/ms143316.aspx

+0

+1但改爲:'string [] files = Directory.GetFiles(@「C:\」,「file.ext」,SearchOption.AllDirectories);'。 – ispiro 2012-02-19 15:03:54

相關問題