6

私がやろうとしているのは、Ionic Zipライブラリ(c#)を使用して、すべてのフォルダーとファイルのリストをZipファイルのルートに追加することです。

これが私がこれまでに持っているものです

string k = "B:/My Documents/Workspace";
private void button1_Click(object sender, EventArgs e)
{
   using (ZipFile zip = new ZipFile())
   {   
       //add directory, give it a name
       zip.AddDirectory(k);
       zip.Save("t.zip");
   }
}

さて、zipをこのようにしたいと思います。

  • t.zip
    • ランダムなファイルとフォルダ

でもこんな感じです。

  • t.zip
    • t(フォルダ)
      • ランダムなファイルとフォルダ

助けていただければ幸いです、ありがとうございます。

4

3 に答える 3

10

AddDirectory のデフォルトの動作では、サブディレクトリを作成せずに、ディレクトリの内容を zip ファイルのルート パスに追加する必要があります。

AddDirectory の 2 番目のオーバーロードがあります。これは、zip ファイル内の追加ファイルのパスを指定するパラメーターを追加します。ただし、ファイルをルート ディレクトリに配置する必要があるため、これは単なる空の文字列になります。

zip.AddDirectory(k, "");

詳細については、このドキュメントを参照してください。

これは、サブフォルダーがどこから来たのかを説明していません。問題はコード内の他の何かにあると思われます。これをデバッグで実行し、AddDirectory を呼び出したときに「k」が何に等しいかを確認したり、zip.Entries コレクション内のすべての「エントリ」を出力したりすると便利な場合があります。

于 2012-10-29T20:36:06.080 に答える
0

次のようなことを試してみませんか。

foreach (var file in System.IO.Directory.GetFiles(k))
{
    zip.AddFile(file);
}

ディレクトリとファイルを無制限の深さまで取得するには、それをに基づく再帰メソッドと組み合わせSystem.IO.Directory.GetDirectories("path")ます。

于 2013-07-23T11:42:49.550 に答える