4

ユーザー入力に基づいてファイルを含む圧縮パッケージを作成する機能を持つプログラムを作成しようとしています。

これらのファイルを圧縮する前にハード ドライブに書き込む必要はありません。実際にハード ドライブに書き込まずにこれらのファイルを作成し、圧縮するにはどうすればよいでしょうか。

DotNetZip を使用しています。

4

3 に答える 3

4

こちらのドキュメント、具体的には「ストリームから取得したコンテンツを使用して zip を作成する」という例を参照してください。

 using (ZipFile zip = new ZipFile())
  {
    ZipEntry e= zip.AddEntry("Content-From-Stream.bin", "basedirectory", StreamToRead);
    e.Comment = "The content for entry in the zip file was obtained from a stream";
    zip.AddFile("Readme.txt");
    zip.Save(zipFileToCreate);
  }

ファイルがまだストリーム形式になっていない場合は、ストリーム形式に変換する必要があります。おそらく、そのためにMemoryStreamを使用したいと思うでしょう。

于 2012-12-10T18:09:17.853 に答える
0

私は SharpZipLib を使用していますが、DotNetZip が基本的な System.IO.Stream に対してすべてを実行できる場合は、書き込み先の MemoryStream をフィードするだけです。

于 2012-12-10T17:47:14.507 に答える
0

ハードディスクへの書き込みは不要だから避けるべきではありません。それは逆です。圧縮プロセス全体をメモリ内で実行する必要がない場合は、ハードディスクに書き込むことで回避してください。

ハードディスクは、メモリよりも大量のデータを格納するのに適しています。万が一、zip ファイルのサイズが約 1 GB になると、アプリケーションがクラックするか、少なくともシステムの速度低下を引き起こす可能性があります。ハード ドライブに直接書き込む場合、zip のサイズは数ギガバイトになる可能性がありますが、問題は発生しません。

于 2012-12-10T17:48:36.057 に答える