gpt4 book ai didi

c# - 在 C# 中解压缩子目录和文件

转载 作者:太空狗 更新时间:2023-10-29 20:58:50 25 4
gpt4 key购买 nike

我正在尝试在我目前正在从事的项目中实现解压缩功能,但问题是我在许可方面有一些限制,我需要远离 GPL 类许可证,因为该项目是闭源的。

所以这意味着我不能再使用 SharpZipLib.. 所以我转向了 .Net 库目前我正在尝试使用 ZipArchive 库。

问题是它不会提取目录/子目录,所以如果我有 blabla.zip里面的file.txt和/folder/file2.txt会全部解压到file.txt和file2.txt,所以忽略子目录。

我正在使用 MSDN 网站上的示例。看起来像:

using (ZipArchive archive = ZipFile.OpenRead(zipPath))
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
entry.ExtractToFile(Path.Combine(extractPath, entry.FullName));
}
}

知道如何解决这个问题吗?

最佳答案

如果您的存档如下所示:

archive.zip
file.txt
someFolder
file2.txt

然后 file2.txt 的 entry.FullNamesomeFolder/file2.txt 所以如果文件夹存在,即使您的代码也能正常工作。所以你可以创建它。

foreach (ZipArchiveEntry entry in archive.Entries)
{
string fullPath = Path.Combine(extractPath, entry.FullName);
if (String.IsNullOrEmpty(entry.Name))
{
Directory.CreateDirectory(fullPath);
}
else
{
if (!entry.Name.Equals("please dont extract me.txt"))
{
entry.ExtractToFile(fullPath);
}
}
}

或者如果你需要提取所有存档,你最好使用静态ZipFile方法

ZipFile.ExtractToDirectory(zipPath, extractPath); 

关于c# - 在 C# 中解压缩子目录和文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18714153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com