DotNetZip:如何提取文件,但忽略zipfile中的路径?

Kum*_*mar 11 c# zip dotnetzip

试图将文件提取到给定的文件夹,忽略zipfile中的路径,但似乎没有办法.

考虑到其中实现的所有其他好东西,这似乎是一个相当基本的要求.

我错过了什么?

代码是 -

using (Ionic.Zip.ZipFile zf = Ionic.Zip.ZipFile.Read(zipPath))
{
    zf.ExtractAll(appPath);
}
Run Code Online (Sandbox Code Playgroud)

And*_*son 23

虽然您无法为特定的Extract()or 调用指定它ExtractAll(),但ZipFile该类有一个FlattenFoldersOnExtract字段.设置为true时,它会将所有提取的文件展平为一个文件夹:

var flattenFoldersOnExtract = zip.FlattenFoldersOnExtract;
zip.FlattenFoldersOnExtract = true;
zip.ExtractAll();
zip.FlattenFoldersOnExtract = flattenFoldersOnExtract;
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案([DontNetZip doc](http://dotnetzip.herobo.com/DNZHelp/html/4970c6e8-c169-3ecc-b5f2-8ba9b354c51d.htm)).另一个答案是解决方法:它在解压缩之前重命名zip文件. (5认同)

Sof*_*per 14

您需要在解压缩之前删除文件名的目录部分...

using (var zf = Ionic.Zip.ZipFile.Read(zipPath))
{
    zf.ToList().ForEach(entry =>
    {
        entry.FileName = System.IO.Path.GetFileName(entry.FileName);
        entry.Extract(appPath);
    });
}
Run Code Online (Sandbox Code Playgroud)