ファイルをネットワーク経由で送信する前に圧縮したいと考えています。7zip は無料でオープン ソースであるため、最善のアプローチだと思います。
.net で 7zip を使用するにはどうすればよいですか?
それは無料で、C# のソース コードがあることは知ってい7zip
ますが、何らかの理由で C# では非常に遅いため7z.dll
、パフォーマンス上の理由から 7zip をインストールするときに付属する dll を呼び出します。したがって、簡単にマーシャリングしてメソッドを呼び出す方法 は、 Sevenzipsharp7z.dll
というライブラリを使用することです。たとえば、その dll をプロジェクトに追加すると、次のことが可能になります。
// if you installed 7zip 64bit version then make sure you change plataform target
// like on the picture I showed above!
SevenZip.SevenZipCompressor.SetLibraryPath(@"C:\Program Files\7-Zip\7z.dll");
var stream = System.IO.File.OpenRead(@"SomeFileToCompress.txt");
var outputStream = System.IO.File.Create("Output.7z");
SevenZip.SevenZipCompressor compressor = new SevenZip.SevenZipCompressor();
compressor.CompressionMethod = SevenZip.CompressionMethod.Lzma2;
compressor.CompressionLevel = SevenZip.CompressionLevel.Ultra;
compressor.CompressStream(stream, outputStream);
これが、C# 内で 7zip を使用する方法です。
今私の質問は:
圧縮ファイルをネットワーク経由で送信したいと考えています。最初に圧縮してから送信できることはわかっています。ファイルは 4GB あるので、圧縮されるまでしばらく待たなければなりません。ハードドライブで多くのスペースを浪費します。そうしたら、やっと送れるようになります。それはとても複雑だと思います。ファイルが圧縮されている間にファイルを送信する方法を知りたいと思っていました。