【发布时间】:2020-09-03 20:57:21
【问题描述】:
问题:我有这段代码可以提取指定目录中的所有 .zip 文件夹。现在我的问题是我的 .zip 文件在其中包含另一个 .zip 文件。我的程序的输出是它为提取的 zip 文件创建一个文件夹,其命名结构类似于 NUMBER_ + ZipFileName ,现在当我打开该文件夹时,它仍然包含一个 .zip 文件夹。如何在同一 NUMBER_ + ZipFileName 文件夹上的 zip 文件夹中提取 zip 文件夹?这让我有点困惑。
所需的文件结构
Temp -> number_zipfilename-> [在此处提取的文件 w/o .zip]
number_zipfilename2 -> [此处没有 .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);
});
}
【问题讨论】:
-
你想递归解压吗?就像...为每个解压缩的 zip 文件再次调用您的例程? ...哦,顺便说一句...您知道 42.zip 吗?它是一个 42KB 的 zip 文件,其中包含 zip 文件,如果递归解压缩,它会扩展至大约 4.5 PB...en.wikipedia.org/wiki/Zip_bomb
-
@DarkSquirrel42 感谢您的提醒!不过,此试用版仅包含 .zip 文件,再次感谢! :)
标签: c# zip extract unzip extraction