我最近遇到了My.Computer.FileSystem.DeleteDirectory()
的問題。它不會刪除只讀文件。帶有隻讀文件的My.Computer.FileSystem.DeleteDirectory()?
我通過谷歌搜索發現,我可以通過將文件屬性更改爲「正常」來刪除只讀文件。所以我寫了一個遞歸函數,如下所示。
Private Sub DeleteDir(ByVal dir As DirectoryInfo)
For Each d In dir.GetDirectories
DeleteDir(d)
Next
For Each f In dir.GetFiles
Try
f.Attributes = FileAttributes.Normal
f.Delete()
Catch ex As Exception
Log(ex.Message)
End Try
Next
dir.Delete(True)
End Sub
它似乎做工精細,但它會很好,如果My.Computer.FileSystem.DeleteDirectory()
有另外的參數刪除只讀文件,或有一個更簡單的方法來做到這一點。
謝謝蒂姆,我通過你的文章瞭解了一些關於擴展。多態化當前的Delete並添加一個額外的布爾參數「force_read_only_delete」或類似的東西會很好。你可以通過擴展多形?這可能是另一個問題:) – Rots 2010-09-24 05:49:51
是的,你可以。我已經爲現有代碼添加了一個示例。 – 2010-09-24 08:21:43