文件名'filename'已经存在VB .NET
问题描述:
我想提取归档文件。 但问题是,代码运行时,它抛出下面的异常:文件名'filename'已经存在VB .NET
System.IO.IOException:“文件‘文件名’已经存在。”
这里是代码
File.WriteAllBytes(String_TempDir & "\rzip.zip", My.Resources.Resszip) 'I wrote the file from my application resources
Compression.ZipFile.ExtractToDirectory(String_TempDir & "\rzip.zip", String_TempDir) 'This line throws the exception
File.Delete(String_TempDir & "\rzip.zip")
我看到执行的代码之前没有(没有文件)...
执行的代码后,它抛出异常,但是,我的归档文件已被提取。
我曾经尝试声明区分例外,但它仍然抛出该异常......
Try
Compression.ZipFile.ExtractToDirectory(String_TempDir & "\rzip.zip", String_TempDir)
Catch ex As IOException
'That's it.
End Try
的String_TempDir是我给它分配一个字符串:
'global declaration:
Dim folder As String = Path.Combine(Path.GetTempPath, Path.GetRandomFileName)
'End of global declaration
Public Function GetTempDir() As String
Do While Directory.Exists(folder) Or File.Exists(folder)
folder = Path.Combine(Path.GetTempPath, Path.GetRandomFileName)
Loop
Return folder
End Function
'Form loads
Directory.CreateDirectory(folder)
String_TempDir = folder
答
只是猜测,但这可能是因为你正在将Zip文件放到你要提取的同一个目录中。尝试解压到临时目录的子目录。例如
Compression.ZipFile.ExtractToDirectory(String_TempDir & "\rzip.zip", String_TempDir & "\extracted")
的MSDN article on ExtractToDirectory说以下(重点煤矿):
此方法创建指定的目录和所有子目录。 目标目录不能存在。与 相关的异常在验证目标目录名称中的路径或 sourceArchiveFileName参数时会在提取之前引发。 否则,如果在提取过程中发生错误,归档仍然为 部分提取。每个提取的文件具有相同的相对路径,以 destinationDirectoryName指定的目录作为源 条目必须归档的根目录。
答
你是否还检查过Zip文件不包含任何重复的名称? 如果它是在Linux上压缩的,它可能同时包含Filename
和filename
,并且可能会导致此错误。特别是因为你说它最初不包含任何文件,而且它似乎可以成功解压缩它。
有点类似的问题here,但具有的7-Zip
在[文档](https://msdn.microsoft.com/en-us/library/system.io.compression.zipfileextensions.extracttodirectory(五= vs.110).aspx)IOException中列出了许多原因。检查其中一个是否适用 – Steve
[System.IO.Compression和ZipFile - 提取并覆盖]的可能重复(https://*.com/questions/15464740/system-io-compression-and-zipfile-extract-and-覆盖) – Pikoh