您好我正在使用Shell32对解压缩文件进行一些测试。在这段代码中,有几个文件在" C:\ Temp"我通过创建一个新的文件夹名称Unzip解压缩这些文件,它将存储解压缩的文件。
所以问题是如何检查文件是否已经存在,程序将保持或继续下一个功能。这是代码。
Dim di As New IO.DirectoryInfo("C:\Temp")
Dim diar1 As IO.FileInfo() = di.GetFiles()
Dim dra As IO.FileInfo
Dim sc As New Shell32.Shell()
For Each dra In diar1
IO.Directory.CreateDirectory("C:\Temp\Unzip\" & dra.Name & "")
Dim output As Shell32.Folder = sc.NameSpace("C:\Temp\Unzip\" & dra.Name & "")
Dim input As Shell32.Folder = sc.NameSpace("C:\Temp\" & dra.Name & "")
output.CopyHere(input.Items, 4)
Next
提前谢谢:)
答案 0 :(得分:0)
File.Exists() is bad for this kind of thing。
您要做的是尝试以一种如果文件已经存在而失败(抛出异常)的方式打开输出流,并处理异常。不幸的是,您现在正在使用的Shell32流程并不允许这样做。但是,直接使用.Net解压缩文件并不困难。特别是如果你可以使用.Net 4.5,这很简单:内置了新的ZipArchive支持。在.Net的早期版本中,您可能需要查看SharpZipLib。它在C#中,但您可以使用VB.Net中的库。