■99989 / ) |
Re[8]: FileStreamを使わない圧縮、解凍について教えて下さい |
□投稿者/ 魔界の仮面弁士 (3416回)-(2022/06/27(Mon) 21:46:19)
|
■No99987 (魔界の仮面弁士) に追記 > とりあえず、byte[] で受け渡せるようにしてみました。
調べてみたら、わざわざ書かなくとも既存の C# 実装が多数あるようで…。
=== https://gist.github.com/ststeiger/cb9750664952f775a341 LZMA SDK に、上記の SevenZipHelper.cs というラッパー クラスを追加するだけで、 バイナリをインメモリ圧縮/解凍できるメソッドが手に入ります。
byte[] SevenZip.Compression.LZMA.SevenZipHelper.Compress( byte[] inputBytes ) byte[] SevenZip.Compression.LZMA.SevenZipHelper.Decompress( byte[] inputBytes )
byte[] SevenZip.Compression.LZMA.SevenZipHelper.Compress( string inFileName ) byte[] SevenZip.Compression.LZMA.SevenZipHelper.Decompress( string inFileName )
void SevenZip.Compression.LZMA.SevenZipHelper.Compress( string inFileName, string outFileName ) void SevenZip.Compression.LZMA.SevenZipHelper.Decompress( string inFileName, string outFileName )
=== https://github.com/CCob/dnMerge/blob/master/dnMerge/Inject/7zip/SevenZipHelper.cs こちらもほぼ同じですが、バイナリのみでファイル受け渡しは無し。
byte[] SevenZip.Compression.LZMA.SevenZipHelper.Compress( byte[] inputBytes ) byte[] SevenZip.Compression.LZMA.SevenZipHelper.Decompress( byte[] inputBytes )
=== https://github.com/episage/lzma-compressor/blob/master/SevenZipHelper.cs こちらの SevenZipHelper.cs 実装は Stream 前提。
void SevenZip.Helper.Compress( Stream inStream, Stream outStream ) void SevenZip.Helper.Decompress( Stream inStream, Stream outStream )
|
|