我找到了我的问题的答案(感谢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
我不太擅长解释事情,但如果您有任何问题或建议,请随时发表评论。