请帮助...... 我尝试解压缩文件夹时遇到错误“文件存在”。 首先,代码工作正常,但后来我遇到“文件存在” 这是我的代码:
Private Sub unzip(ByVal Source As String, ByVal Output As String)
Dim m_Sc As New Shell32.Shell
If Directory.Exists(Output) Then
Directory.Delete(Output)
End If
Dim m_Output As Shell32.Folder = m_Sc.NameSpace(Output)
Dim m_Source As Shell32.Folder = m_Sc.NameSpace(Source)
m_Output.CopyHere(m_Source.Items, 4)
End Sub
我正在使用vb.net(3.5)2008 提前致谢
答案 0 :(得分:3)
我找到了问题的答案(感谢stackoverflow)
问题:当我反复解压缩同一个文件时,它会在临时目录中创建解压缩文件的副本。 如果临时目录已达到其限制(99份),那么它会导致错误"该文件存在"。
临时目录位置:" C:\ Documents and Settings(您的用户帐户)\ Local Settings \ Temp"。
您可以使用(My.Computer.FileSystem.SpecialDirectories.Temp)或(Environment.GetEnvironmentVariable(" TEMP"))在.net中访问它们。
解决方案: 在解压缩(提取)文件之前,我首先删除临时文件夹中的上一个副本。 这是我清除临时目录的代码:
Sub CleanUpTemporaryFiles()
Dim m_StrTemporaryDirectory As String = ""
'Get the Temporary folder directory
m_StrTemporaryDirectory = Environment.GetEnvironmentVariable("TEMP")
If Directory.Exists(m_StrTemporaryDirectory & _
"\Temporary Directory 1 for " & _
m_ApplicationName & ".zip\") Then
Dim directory As String = m_StrTemporaryDirectory & _
"\Temporary Directory 1 for " & _
m_ApplicationName & ".zip\" & _
m_ApplicationName
Dim dirInfo As New DirectoryInfo(directory)
'Loop on all the files
For Each f In IO.Directory.GetFiles(directory, "*.*", SearchOption.AllDirectories)
'Change the the file attribute to not read only so that it will not get an error deleting the file
File.SetAttributes(f.ToString, File.GetAttributes(f.ToString) _
Xor FileAttributes.ReadOnly Or FileAttributes.Hidden)
'Delete the file
File.Delete(f)
Next
If System.IO.Directory.Exists(My.Computer.FileSystem.SpecialDirectories.Temp & _
"\Temporary Directory 1 for " & m_ApplicationName & ".zip") Then
System.IO.Directory.Delete(My.Computer.FileSystem.SpecialDirectories.Temp & _
"\Temporary Directory 1 for " & m_ApplicationName & ".zip", True)
End If
End If
End Sub
我在解释事情方面不太好,但如果您有任何问题或建议,请随时发表评论。
答案 1 :(得分:0)
在这一行
m_Output.CopyHere(m_Source.Items, 4)
如果将其更改为值16会发生什么?
m_Output.CopyHere(m_Source.Items, 16)
如果文件已存在,是否会覆盖该文件?