我正在尝试删除整个目录,但遇到问题。
问题
当尝试删除目录时,它不起作用。我知道 Stackoverflow 讨厌这个答案,但这是事实,没有错误。事实上,它给了我“成功”的信息。
这时候事情就变得棘手了。如果我在目录中创建一个文件夹并添加一些虚拟文件,它会起作用,但如果我将它与已经存在的文件夹一起使用,它不会将其删除。
Dim loc As String = "\\drtnas01\storeprofiles" 'Profile Location
Dim dfile As String = "\" & BatchTextBox.Text
Dim path As String = loc & dfile
VDIRebuildBG.ReportProgress(10, "Looking for Profile")
BatchStatusBox.Style = ButterscotchAlertBox.AlertStyle.Success
If Directory.Exists(path) Then
VDIRebuildBG.ReportProgress(20, "Profile Found")
BatchStatusBox.Style = ButterscotchAlertBox.AlertStyle.Success
Try
VDIRebuildBG.ReportProgress(30, "Starting Rebuild")
System.IO.Directory.Delete(path, True)
Catch
VDIRebuildBG.ReportProgress(100, "Error Rebuilding")
BatchStatusBox.Style = ButterscotchAlertBox.AlertStyle.Error
End Try
VDIRebuildBG.ReportProgress(100, "Profile Rebuilt")
BatchStatusBox.Style = ButterscotchAlertBox.AlertStyle.Success
Else
VDIRebuildBG.ReportProgress(100, "Profile Not Found")
BatchStatusBox.Style = ButterscotchAlertBox.AlertStyle.Error
Exit Sub
End If
Run Code Online (Sandbox Code Playgroud)
请注意,我有权限,因为我可以手动删除该文件夹。
注2:该文件夹位于服务器上(所以速度有点慢),并且文件夹大小为50-100mb,不确定是否超时或其他原因?
编辑:见鬼,我复制了一个文件夹,并将其放入我的测试文件夹中,然后尝试了它,但它没有删除。这让我相信它与尺寸有关。
编辑 II (3/16):我做了一些更多的测试,并想传达我发现的信息。运行要删除的代码,将删除文件夹中的所有文件,但不会删除文件结构。如果我再次运行该代码,它不会删除任何剩余的文件夹。我还尝试对要删除的子文件夹深处的文件夹路径进行硬编码(注意,该文件夹为空),但这也不会删除该文件夹。
我还通过在桌面上放置一个文件夹(带有多个子文件夹)来测试权限问题,我可以在其中拥有完全访问权限。这样做会导致同样的问题。
好吧,看起来Directory.Delete方法有一些问题(比如没有删除带有自定义图标的文件夹,正如我在上面的评论中提到的)。
我建议你使用FileSystem.DeleteDirectory代替..
因此,尝试替换这一行:
System.IO.Directory.Delete(path, True)
Run Code Online (Sandbox Code Playgroud)
和:
My.Computer.FileSystem.DeleteDirectory(path, FileIO.UIOption.OnlyErrorDialogs, FileIO.RecycleOption.DeletePermanently)
Run Code Online (Sandbox Code Playgroud)
或者,如果您不想永久删除目录(仅限本地文件夹):
My.Computer.FileSystem.DeleteDirectory(path, FileIO.UIOption.OnlyErrorDialogs, FileIO.RecycleOption.SendToRecycleBin)
Run Code Online (Sandbox Code Playgroud)
我已经尝试过了,它解决了我的问题..也许它也会解决你的问题。
我希望这有帮助 :)