删除多个文件

时间:2013-05-21 10:47:44

标签: vb.net file directory delete-file

我正在尝试使用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

2 个答案:

答案 0 :(得分:2)

这里有几个问题。

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

其次,文件是否存在并不是失败的唯一方法。例如,如果文件正在使用中,您将获得异常。你应该处理它。

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

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

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

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

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

答案 1 :(得分:-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