提取文件夹中的Zip文件

Ams1

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

我的问题是,我总是会遇到一个例外,即找不到路径的一部分,但是如果我打开zip文件,则文件在那里。

我感到绝望!

private void CreateZipContentFolder(string zipsPath, string destinationPath) {
        Zips = Directory.GetFiles(zipsPath, "*.zip", SearchOption.TopDirectoryOnly).ToList();
        if (Zips.Count != 0) {

            MyLog.WriteToLog("Creating Folder of ZipFiles... From: " + zipsPath + " To: " + destinationPath, MyLog.Messages.Info);

            foreach (string zip in Zips) {
                FileInfo fileInfo = new FileInfo(zip);
                string dirName = destinationPath + "\\" + fileInfo.Name.Substring(0, fileInfo.Name.Length - 4);

                using (ZipArchive archive = ZipFile.OpenRead(zip)) {

                    foreach (ZipArchiveEntry entry in archive.Entries) {

                        if (entry.FullName.EndsWith("/")) {

                            try {
                                ZipFile.ExtractToDirectory(zip, destinationPath);
                            } catch (IOException e) {
                                MyLog.WriteToLog(e.Message, MyLog.Messages.Error);
                            }
                            break;

                        } else if (new FileInfo(dirName).Exists == false) {

                            try {
                                Directory.CreateDirectory(dirName);
                                ZipFile.ExtractToDirectory(zip, dirName);
                            } catch (IOException e) {
                                MyLog.WriteToLog(e.Message, MyLog.Messages.Error);
                            }
                            break;
                        }
                    }
                }
            }
            MyLog.WriteToLog("Created Temporary Folders", MyLog.Messages.Info);
        } else { MyLog.WriteToLog("No Zips Found in: " + zipsPath, MyLog.Messages.Warning); }
    }

更新:例外

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

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

来源= mscorlib

用户名

我已经对您的代码进行了一些测试,但是在进行之前-我进行了必要的重构。您的代码确实需要它。我删除了所有“日志”行,但我认为-您将了解如何使用它。它应该工作,但是您使用了一些非常差劲的解决方案来做简单的事情,这可能是导致异常的原因。

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

如果您的文件树无法开始工作,还可以提供“文件树”之类的信息吗?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从子文件夹中的 zip 文件中提取文件

将ZIP存档中的文件夹内的文件提取到当前文件夹

从Zip文件中删除文件夹

Linux Shell文件夹中的Zip文件夹

如果存档中没有子文件夹,如何在RAR / ZIP提取中创建子文件夹?

批处理:将文件夹x中的每个zip提取到单独的文件夹中

如何使用SharpZipLib从zip文件中提取文件夹?

提取zip文件并使用python保留顶部文件夹

提取并重命名zip文件文件夹

ExtractToDirectory ,如何使用 c# 在 zip 文件夹中提取 zip 文件夹

通过Ubuntu终端提取几个zip文件,每个同名的新文件夹中

通过Powershell从zip提取特定文件似乎不希望在子文件夹中查找

使用.bat文件或dos命令提取目录(包括子文件夹)中的所有Zip

为目录中的每个zip文件创建一个专用文件夹并提取zip文件

bash中的zip文件夹

Pentaho 中的 Zip 文件夹

从文件夹中的所有文件创建zip文件

通过express将zip提取到文件夹节点

从Zip中提取特定的子文件夹

从Python3中的zip存档中提取特定文件夹的内容

如何使用powershell提取同一文件夹中子文件夹中的所有zip文件

从递归文件夹中删除所有zip文件

如何知道zip文件中的文件夹大小(Python)

从子文件夹读取R中的zip文件

将文件夹中的所有子文件夹压缩为单个zip文件

文件夹的zip内容

如何从Python中的文件路径提取文件夹路径?

提取文件夹中包含的.gz文件

在文件夹中创建zip文件,但在该zip文件中没有文件夹