提取文件夹中的Zip文件

时间:2016-04-27 12:23:10

标签: c# file io zip

我想提取一个zip文件,它应该检查zip文件中是否有一个文件夹。如果是,它应该提取到与其中的文件夹相同的文件夹。如果不是,则应该使用zipfolder名称。

我的问题是我总是得到一个例外,一条路径的一部分找不到但是如果我打开拉链文件就在那里。

我绝望了!

GET

更新:例外

System.IO.DirectoryNotFoundException未处理   的HResult = -2147024893

消息=无法找到路径'P:\ Documents_UBS_AM \ Projekte \ DataCompare \ New \ package4 \ AssetPerformance.txt'的一部分。

源= mscorlib程序

1 个答案:

答案 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;
                        }
                    }
                }
            }
        }
    }

如果它没有开始为你工作,还能提供类似“文件树”的东西吗?