问题:我有这个代码,可以提取指定目录内的所有.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);
});
}
根据我在你的代码中所看到的,我认为你应该在程序中调用 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);
});
}