C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 174 を表示中)
■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 )
返信 編集キー/


管理者用

- Child Tree -