ファイルをzipファイルに圧縮するためにSevenZipSharpを使用しています。それを使用してメモリ ストリームから zip を作成する方法はありますか (つまり、前にファイルをメモリ ストリームにロードします)。
ありがとう、マヤ。
ファイルをzipファイルに圧縮するためにSevenZipSharpを使用しています。それを使用してメモリ ストリームから zip を作成する方法はありますか (つまり、前にファイルをメモリ ストリームにロードします)。
ありがとう、マヤ。
私はストリームで SevenZipSharp を使用していますが、問題はありません。
SevenZip.SevenZipCompressor compressor = new SevenZip.SevenZipCompressor();
compressor.CompressionMethod = SevenZip.CompressionMethod.Lzma2;
compressor.CompressionLevel = SevenZip.CompressionLevel.Normal;
compressor.CompressStream(ms, compressedStream);
最後の行で、「ms」は圧縮したいストリームです。たとえば、MemoryStream としましょう。「compressedStream」は、zip したいストリームです。別の MemoryStream または FileStream のいずれかにすることができます...
解凍の場合:
SevenZip.SevenZipExtractor extractor = new SevenZip.SevenZipExtractor(compressedStream);
extractor.ExtractFile(0, decompressedStream);
SevenZipExtractor には圧縮解除ストリーム メソッドがないため、代わりに ExtractFile() を使用します。
非常に簡単。そして、上記のコードのいずれかが呼び出される前に、次のように 7zip dll を指定する必要があります。
SevenZip.SevenZipBase.SetLibraryPath(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + "\\7-zip\\7z.dll");
私の場合、7z.dll をアプリにバンドルせず、7-zip をマシンに個別にインストールします。
全体として非常に簡単です。codeplex から SevenZipSharp をダウンロードしました - http://sevenzipsharp.codeplex.com/と 7-zip からhttp://www.7-zip.org/。
残念ながら、SevenZipSharp は 7z アプリケーションの単なる COM ラッパーです。したがって、簡単なストリーム サポートはありません。おそらく<SevenZipCompressor Instance>.CustomParameters.Add()
、ファイルを に出力するように指示することがstdout
できます。これは、アプリケーションで何らかの方法で読み取ることができます。しかし、これは単なる推測であり、これを機能させる方法に関する直接的なヒントはありません。