2
using (ZipFile zip = ZipFile.Read("update.zip"))
{
   zip.ExtractAll("\\serv\\www", ExtractExistingFileAction.OverwriteSilently);
}

上記を使用して、に抽出しようとしupdate.zipてい\serv\wwwます。で囲んだ場合、エラーはスローされず、例外もキャッチされませんtry{} catch{}。関連する場合、update.zip の構造は次のとおりです。

update.zip:
    folderA
        ONE.txt
        TWO.txt

\serv\wwwその中にfolderAいくつかのファイルがあります。

プログラムを実行すると、抽出が成功したように見えますが、ファイルがどこにも表示されません。何が原因でしょうか?

4

1 に答える 1

2

ハード ドライブの文字も含めたほうがよいでしょう。

c:\サーバー\www

それなしでテストしましたが、動作します。「c:」を含めたときと同じことをしただけです。しかし、それに決定論的な振る舞いがあるかどうかはわかりません。プロジェクトを保存したハード ドライブ パーティションのルートで、解凍されたフォルダを探してみてください。

編集:

DotNetZip 仕様に相談したところ、相対パスのみを指定できると記載されています。

zip アーカイブ内のすべてのアイテムを、ファイル システム内の指定されたパスに抽出します。パスは、相対パスまたは完全修飾パスにすることができます。

ただし、そうすると、解凍されたファイルがどこに表示されるかについては言及されていません。私の推測は、答えの最初の部分にあります。私のテスト プロジェクトは C:/Users/... に保存されており、展開されたファイルは C: のルートに直接表示されます。

于 2013-11-09T13:46:52.447 に答える