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