2008-11-05 56 views
66

我有一個垃圾郵件目錄,我可以在那裏下載,一次性項目,電子郵件草稿以及其他幾天可能有用的東西,但不需要永久保存。爲了阻止這個目錄接管我的機器,我編寫了一個程序,該程序將刪除所有超過指定天數的文件,並記錄一些統計數據,包括刪除的文件數量和它們的大小,以方便玩樂。如何刪除只讀文件?

我注意到一些項目文件夾的生活方式比他們應該更長,所以我開始調查。特別是,似乎我曾經使用過SVN的項目文件夾正在不停地徘徊。事實證明,.svn目錄中的只讀文件未被刪除。我只對一個只讀文件做了一個簡單的測試,發現System.IO.File.DeleteSystem.IO.FileInfo.Delete不會刪除一個只讀文件。

我不在乎保護這個特定目錄中的文件;如果有重要的東西在那裏,那就錯了。有沒有一個.NET類可以刪除只讀文件,或者我將不得不檢查只讀屬性並刪除它們?

+2

我改變接受的答案,因爲古勒扎爾的代碼示例比Tim Stewart的更詳細。應該首先選擇那個,但由於某種原因,我喜歡Tim的更好。人是奇怪的東西! – OwenP 2009-04-30 22:13:58

+4

+ +1爲了讓時間在宇宙中變得更加正確一些。如果只有我的開發人員會回去糾正我們自己的輕微違規行爲,我們才能取消補救編程課程! – 2009-05-01 11:38:45

回答

133

添加一些示例代碼添的回答是:

using System.IO; 

File.SetAttributes(filePath, FileAttributes.Normal); 
File.Delete(filePath); 
2

爲什麼你需要檢查?只需強制清除只讀標誌並刪除文件。

1

嗯,我想我寧願把

>del /F * 

成sheduled任務。也許包裹在一個批處理文件中用於記錄統計。

我錯過了什麼嗎?

+0

是的。他希望刪除特定年齡的文件。並非每個時期的所有文件。 – 2008-11-05 17:22:44

+0

他不想刪除所有文件,而只是刪除超過一定時間的所有文件。 – 2008-11-05 17:22:54

16

等效如果你碰巧有一個FileInfo對象的工作是:

file.IsReadOnly = false; 
file.Delete();