Я использую SevenZipSharp для сжатия файлов в zip-файл. Есть ли способ использовать его для создания zip из потока памяти (что означает, загрузите файл в поток памяти раньше)?SevenZipSharp - сжатый поток памяти
Thanks, Maya.
Я использую SevenZipSharp для сжатия файлов в zip-файл. Есть ли способ использовать его для создания zip из потока памяти (что означает, загрузите файл в поток памяти раньше)?SevenZipSharp - сжатый поток памяти
Thanks, Maya.
К сожалению, SevenZipSharp является просто оболочкой COM вокруг приложения 7z. Таким образом, нет легкой поддержки потока. Возможно, можно дать указание через <SevenZipCompressor Instance>.CustomParameters.Add()
вывести файл на номер stdout
, который затем можно как-то прочитать в вашем приложении. Но это просто умозрительно, и у меня нет прямого совета о том, как заставить это работать.
Я использую 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 с моим приложением, 7zip устанавливается отдельно на машину ,
В целом очень просто. Я загрузил SevenZipSharp из codeplex - http://sevenzipsharp.codeplex.com/ и 7-zip из http://www.7-zip.org/.
Это работает. Обратите внимание, что SevenZipExtractor.DecompressStream выдает ошибку, если вы используете ее так, как вы ожидали. – Kaganar
Я знаю, что это старо, но я не могу заставить 7z.dll нормально загружаться/работать. Я могу загрузить файл 7za.dll для загрузки/работы, но он поддерживает только .7z, и я ищу поддержку .zip. Где/что 7z.dll - это «правильная» DLL? благодаря! –