0

ルートに 2 つのフォルダーしか含まれていない zip ファイルがありBinariesますSource。ただし、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 に答える