我有一些代码将文件解压缩到目录。在下面的代码中,Global.fullpath是文件的完整路径,其中Global.path是目录的路径。此代码有效:
private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
{
AppendTextBox("Extracting Files...\r\n");
ZipFile.ExtractToDirectory(Global.fullPath, Global.path);
}
但是,如果存在任何文件,我正在尝试覆盖,所以我有这个代码,即使没有现有文件也似乎无法提取任何内容:
private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
{
AppendTextBox("Extracting Files...\r\n");
using (ZipArchive archive = ZipFile.OpenRead(Global.fullPath))
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
AppendTextBox("Extracting file: " + entry.FullName + "...\r\n");
entry.ExtractToFile(Path.Combine(Global.path, entry.FullName), true);
}
}
}
答案 0 :(得分:0)
确保检查组合路径是否为有效文件名。 ExtractToFile方法需要以文件名结尾的路径,而某些Zip存档可以包含文件夹。在这种情况下,entry.FullName属性会导致无效路径。
答案 1 :(得分:0)
根据评论,如果您尝试提取目录ExtractToFile()
,则不会按预期执行。目录不能像文件一样容易被覆盖。我认为你有两个选择:
检查FullName指定的目录是否存在,并在写入之前将其删除。
检查FullName指定的目录是否存在,然后将您要编写的文件夹重命名为FullName = FullName + "_Copy";