簡體   English   中英

SevenZipSharp - 壓縮內存流

[英]SevenZipSharp - compress memory stream

我正在使用SevenZipSharp將文件壓縮為zip文件。 有沒有辦法用它來從內存流創建一個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”是我要壓縮的流,它可以是另一個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/http://www.7-zip.org/的 7-zip。

不幸的是,SevenZipSharp只是圍繞7z應用程序的COM包裝器。 所以沒有簡單的流支持。 也許可以通過<SevenZipCompressor Instance>.CustomParameters.Add()來指示它將文件輸出到stdout ,然后可以在應用程序中以某種方式讀取它。 但這只是推測性的,我沒有直接提示如何讓它發揮作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM