2

コードから zip ファイルを作成しようとしています。dotnetzipを使用しています。

ディスク上に存在しないフォルダにディレクトリ ツリーを作成したい。どうすればいいですか?

使用してみAddDirectoryましたが、これはディスク上のディレクトリを見つけたいようです。AddEntry も試しましたが、これにはいくつかのコンテンツが必要です。

私のファイルは、FileStream オプションを使用して SQL Server に保存され、そこで階層化されています。

それを行うためにこの再帰的な方法を書きましたが、 AddDirectory 行は機能しません。

    private void GetFiles(ZipFile zipFile, Folder folder, string path)
    {
        zipFile.AddDirectory(folder.FolderName, path);

        foreach (var file in folder.Files)
            zipFile.AddEntry(file.FileName, file.FileData);

        foreach(var subfolder in folder.SubFolders)
        {
            GetFiles(zipFile, subfolder, path + "\\" + subfolder.FolderName);
        }
    }
4

2 に答える 2

5

ディレクトリをインポートする代わりに、 AddDirectoryByNameを使用してzipファイルに新しいディレクトリを作成できます。

于 2011-09-23T15:55:28.467 に答える
1

彼らの例のページから、完全なファイル パスを指定すると、そのパスに対応する ZIP にエントリが追加されるようです。ドキュメントのこのコードサンプルから収集できたものは次のとおりです。

zip アーカイブ内の共通ディレクトリを指定して、アイテムのセットを zip ファイルに追加します。この例では、エントリを zip ファイルに追加します。各エントリは、指定されたパス名を使用して追加されます。

 String[] filenames = { "ReadMe.txt", "c:\\data\\collection.csv", "c:\\reports\\AnnualSummary.pdf"};
  using (ZipFile zip = new ZipFile())
  {
    zip.AddFiles(filenames, "files");
    zip.Save("Archive.zip");
  }
于 2011-09-23T15:56:55.643 に答える