我想提取一个zip文件,它应该检查zip文件中是否有一个文件夹。如果是,它应该提取到与其中的文件夹相同的文件夹。如果不是,则应该使用zipfolder名称。
我的问题是我总是得到一个例外,一条路径的一部分找不到但是如果我打开拉链文件就在那里。
我绝望了!
GET
更新:例外
System.IO.DirectoryNotFoundException未处理 的HResult = -2147024893
消息=无法找到路径'P:\ Documents_UBS_AM \ Projekte \ DataCompare \ New \ package4 \ AssetPerformance.txt'的一部分。
源= mscorlib程序
答案 0 :(得分:1)
我已经对你的代码进行了一些测试,但在此之前 - 我已经进行了必要的重构。你的代码确实需要它。我已删除所有“日志”行,但我认为 - 您将了解如何使用它。它应该可以工作,但你使用了一些非常糟糕的解决方案来做简单的事情,这可能是你例外的原因。
private void CreateZipContentFolder(List<String> zips, string destinationPath)
{
if (zips.Any())
{
foreach (string zip in zips)
{
string dirName = Path.Combine(destinationPath, Path.GetFileNameWithoutExtension(zip));
using (ZipArchive archive = ZipFile.OpenRead(zip))
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
if (entry.FullName.EndsWith("/"))
{
ZipFile.ExtractToDirectory(zip, destinationPath);
break;
}
else if (!Directory.Exists(dirName))
{
Directory.CreateDirectory(dirName);
ZipFile.ExtractToDirectory(zip, dirName);
break;
}
}
}
}
}
}
如果它没有开始为你工作,还能提供类似“文件树”的东西吗?