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

问题描述 投票:0回答:1

问题:我有这个代码,可以提取指定目录内的所有.zip文件夹。 我有这样的代码,可以提取指定目录下的所有.zip文件夹。现在我的问题是,我的.zip文件中包含了另一个.zip文件。我的程序的输出是它为提取的zip文件创建了一个文件夹,其命名结构是这样的 NUMBER_ + ZipFileName ,现在当我打开文件夹时,里面仍然包含一个.zip文件夹。如何在同一个NUMBER_+ZipFileName文件夹上解压一个zip文件夹内的zip文件夹?这让我挺困惑的。

需要的文件结构

Temp - > number_zipfilenam-> [提取的文件在这里wo .zip]

number_zipfilename2 - > [Extraced files here wo .zip]

.....

我的脚本文件结构的输出

Temp - > number_zipfilename -> [提取的文件,但使用.zip]

number_zipfilename -> [提取的文件,但使用.zip]

尝试了递归的建议,但它在我的number_zipfilename文件夹内又创建了一个文件夹,而.zip文件仍然在该文件夹内。

这是我的任务要求,有点难以理解。

这是我的脚本

public void extractZipFiles(string targetFileDirectory, string zipFileDirectory, string Number)
{
            Directory.GetFiles(zipFileDirectory, "*.zip", SearchOption.AllDirectories).ToList()
            .ForEach(zipFilePath => {
                var test = Number + "_" + Path.GetFileNameWithoutExtension(zipFilePath);
                var extractPathForCurrentZip = Path.Combine(targetFileDirectory, test);
                if(!Directory.Exists(extractPathForCurrentZip))
                {
                    Directory.CreateDirectory(extractPathForCurrentZip);
                }
                ZipFile.ExtractToDirectory(zipFilePath, extractPathForCurrentZip);
            });
}
c# zip extract unzip extraction
1个回答
0
投票

根据我在你的代码中所看到的,我认为你应该在程序中调用 extractZipFiles 方法,所以在提取之后,你可以用提取文件的目录再次调用该方法,这样它就可以扫描到 *.zip 文件。

我不知道你想用什么变量,但像这样。

public void extractZipFiles(string targetFileDirectory, string zipFileDirectory, string Number)
{
            Directory.GetFiles(zipFileDirectory, "*.zip", SearchOption.AllDirectories).ToList()
            .ForEach(zipFilePath => {
                var test = Number + "_" + Path.GetFileNameWithoutExtension(zipFilePath);
                var extractPathForCurrentZip = Path.Combine(targetFileDirectory, test);
                if(!Directory.Exists(extractPathForCurrentZip))
                {
                    Directory.CreateDirectory(extractPathForCurrentZip);
                }
                ZipFile.ExtractToDirectory(zipFilePath, extractPathForCurrentZip);
                extractZipFiles(targetFileDirectory, extractPathForCurrentZip, Number);
            });
}
© www.soinside.com 2019 - 2024. All rights reserved.