ExtractToDirectory,如何使用 c# 在 zip 文件夹中提取 zip 文件夹
ExtractToDirectory , how to extract a zip folder within a zip folder using c#
问题: 我有这段代码可以提取指定目录中的所有 .zip 文件夹。现在我的问题是我的 .zip 文件中包含另一个 .zip 文件。我的程序的输出是它为使用 NUMBER_ + ZipFileName
这样的命名结构提取的 zip 文件创建了一个文件夹,现在当我打开该文件夹时,它仍然包含一个 .zip 文件夹。如何在同一 NUMBER_ + ZipFileName 文件夹中的 zip 文件夹中提取 zip 文件夹?这让我有点困惑。
想要的文件结构
Temp -> number_zipfilename-> [ 此处提取文件 w/o .zip]
number_zipfilename2 -> [此处提取文件 w/o .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);
});
}
问题: 我有这段代码可以提取指定目录中的所有 .zip 文件夹。现在我的问题是我的 .zip 文件中包含另一个 .zip 文件。我的程序的输出是它为使用 NUMBER_ + ZipFileName
这样的命名结构提取的 zip 文件创建了一个文件夹,现在当我打开该文件夹时,它仍然包含一个 .zip 文件夹。如何在同一 NUMBER_ + ZipFileName 文件夹中的 zip 文件夹中提取 zip 文件夹?这让我有点困惑。
想要的文件结构
Temp -> number_zipfilename-> [ 此处提取文件 w/o .zip]
number_zipfilename2 -> [此处提取文件 w/o .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);
});
}