0

我正在尝试使用 vb.net 删除同一文件夹中的多个文件,但我还没有成功。请帮忙?

我试过了

Dim FileToDelete1 As String
Dim FileToDelete2 As String
Dim FileToDelete3 As String
Dim FileToDelete4 As String
Dim FileToDelete5 As String

FileToDelete1 = Application.StartupPath & "\1.exe"
FileToDelete2 = Application.StartupPath & "\2.dll"
FileToDelete3 = Application.StartupPath & "\3.dll"
FileToDelete4 = Application.StartupPath & "\4.dll"
FileToDelete5 = Application.StartupPath & "\5.dll"

If System.IO.File.Exists( FileToDelete1 ) = True Then

My.Computer.FileSystem.DeleteFile( FileToDelete1 )


ElseIf System.IO.File.Exists( FileToDelete2 ) = True Then

My.Computer.FileSystem.DeleteFile( FileToDelete2 )

ElseIf System.IO.File.Exists( FileToDelete3 ) = True Then

My.Computer.FileSystem.DeleteFile( FileToDelete3 )

ElseIf System.IO.File.Exists( FileToDelete4 ) = True Then

My.Computer.FileSystem.DeleteFile( FileToDelete4 )

ElseIf System.IO.File.Exists( FileToDelete5 ) = True Then

My.Computer.FileSystem.DeleteFile( FileToDelete5 )

End If
4

2 回答 2

2

这里有几个问题。

首先,File.Exists返回一个布尔值。是不必要的"=True",因为你基本上是在问 if True=True。幸运的是,它是。

其次,文件存在与否不是失败的唯一途径。例如,如果该文件正在使用中,您将得到一个异常。你应该处理它。

第三,如果你需要删除一千个文件怎么办?你会String为他们每个人创建一个吗?有更好的选择,例如,GetFiles将返回 a 的方法ReadOnly List of Strings,每个代表一个文件。我不知道您的需求,但要捕获您提到的文件,可以进行以下调用:

FileIO.FileSystem.GetFiles(Application.StartupPath, FileIO.SearchOption.SearchTopLevelOnly, {"?.exe", "?.dll"})

如果名称仅包含一个字符,它将获取每个 EXE 和 DLL 文件。

最后,请注意,如果满足第一个条件,则不会评估其他条件,因此不会删除其他文件。使用该实现,您需要运行该程序 5 次才能删除每个文件。GetFiles 方法也解决了这个问题。

此外,考虑导入命名空间,这样您就不需要在每个方法调用中添加前缀。

于 2013-05-21T11:06:27.063 回答
-1

看起来你想做这样的事情

Dim fileNames() as string={"1","2","3"}
Dim fileTypes() as string={"exe","dll"} 

directory.SetCurrentDirectory(Application.StartupPath)
  For each fileName as string in fileNames
    For each fileType as string in fileTypes
        if My.Computer.FileSystem .FileExists (fileName &"."& fileType) then
          try
            My.Computer.FileSystem.DeleteFile( fileName &"."& fileType )
          catch ex As Exception
            '**** processings related with exception.
          end try
        endif
        'Dim files() As String = Directory.GetFiles(dirPath, fileName &"." & fileType, SearchOption.AllDirectories)
        'For Each FileToDelete as string in files
        '   My.Computer.FileSystem.DeleteFile( FileToDelete )
        'Next
    Next
  Next
于 2013-05-21T11:24:47.930 回答