删除目录

dwb*_*dwb 2 vb.net

我正在尝试删除整个目录,但遇到问题。

问题

当尝试删除目录时,它不起作用。我知道 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):我做了一些更多的测试,并想传达我发现的信息。运行要删除的代码,将删除文件夹中的所有文件,但不会删除文件结构。如果我再次运行该代码,它不会删除任何剩余的文件夹。我还尝试对要删除的子文件夹深处的文件夹路径进行硬编码(注意,该文件夹为空),但这也不会删除该文件夹。

我还通过在桌面上放置一个文件夹(带有多个子文件夹)来测试权限问题,我可以在其中拥有完全访问权限。这样做会导致同样的问题。

Ahm*_*eed 5

好吧,看起来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)

我已经尝试过了,它解决了我的问题..也许它也会解决你的问题。

参考: 如何:在 Visual Basic 中删除目录

我希望这有帮助 :)