0

我有一个 zip 文件,在根目录中只包含两个文件夹:BinariesSource我只需要 Binaries 文件夹。这在 C# 中有可能吗?这是我目前拥有的代码,但不起作用。

using (ZipArchive archive = ZipFile.OpenRead(zipPath.FullName))
{
     foreach (ZipArchiveEntry entry in archive.Entries)
     {
        if (entry.FullName.StartsWith(@"Binaries/", StringComparison.OrdinalIgnoreCase))
        {
             entry.ExtractToFile(Path.Combine(extractPath, "Hepper"));
        }
     }
} 

更新: 它给了我这个错误文件

'C:\Hepper\Hepper' 已经存在。

4

2 回答 2

1

乍一看(没有实际签入 API),您似乎正在尝试将所有条目提取到相同的文件名 ( Path.Combine(extractPath, "Hepper"))。您可能希望将路径和文件名entry作为您要提取到的位置的一部分。

于 2013-10-07T10:48:15.140 回答
0

我找到了解决问题的方法:

using (Ionic.Zip.ZipFile zip1 = Ionic.Zip.ZipFile.Read(path.FullName))
{
       var selection = (from e in zip1.Entries
                      where (e.FileName).StartsWith("Binaries/")
                                 select e);


     Directory.CreateDirectory(_localExtratingPath.FullName);

     foreach (var e in selection)
     {
         e.Extract(_localExtratingPath.FullName);
     }
}
于 2013-10-07T11:27:50.920 回答