C# ExtractToFile与ExtractToDirectory
我有一些将文件解压缩到目录的代码。在下面的代码中,Global.fullpath是文件本身的完整路径,其中as Global.path是目录的路径。此代码适用于:C# ExtractToFile与ExtractToDirectory,c#,file-io,extraction,C#,File Io,Extraction,我有一些将文件解压缩到目录的代码。在下面的代码中,Global.fullpath是文件本身的完整路径,其中as Global.path是目录的路径。此代码适用于: private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e) { AppendTextBox("Extracting Files...\r\n"); ZipFile.ExtractToDirectory(Glob
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);
}
}
}
确保检查组合路径是否为有效的文件名。ExtractToFile方法需要一个以文件名结尾的路径,一些Zip归档文件可以包含文件夹。在这种情况下,entry.FullName属性会导致路径无效。根据注释,如果您试图提取目录ExtractToFile,则无法达到预期效果。目录不能像文件一样容易地被覆盖。我认为你有两个选择: 检查FullName指定的目录是否存在,并在写入之前将其删除 检查FullName指定的目录是否存在,然后重命名您要编写的文件夹,如FullName=FullName+\u Copy
你试过调试吗?archive.Entries有项目吗?是的,它显示它包含5个项目。Global.path看起来怎么样?还有条目。全名?代码看起来不错。您有权限在那里创建文件吗?Global.path显示为C:\\users\\user\\Downloads entry.FullName显示为每日路由/每日路由\不是有效的文件名。