由于某些原因,我找不到使用DotNetZip
的任何示例。
我从Gziped
收到了WebAPI
的内容。
我要做的就是从响应中读取内存流,然后将内容(文本)解压缩为字符串。
我的压缩工作正常,我只是想不出解压缩:
public static byte[] CompressData(byte[] str)
{
using (var output = new MemoryStream())
{
using (
var compressor = new Ionic.Zlib.DeflateStream(
output, Ionic.Zlib.CompressionMode.Compress,
Ionic.Zlib.CompressionLevel.BestSpeed))
{
compressor.Write(str, 0, str.Length);
}
return output.ToArray();
}
}
答案 0 :(得分:-1)
以下代码显示了程序如何从存档中提取文件。
private void ExtractArchive(object sender, EventArgs e)
{
try
{
using (ZipFile zip = ZipFile.Read(txtArchiveName.zip))
{
// Loop through the archive's files.
foreach (ZipEntry zip_entry in zip)
{
zip_entry.Extract(txtExtractTo);
}
}
MessageBox.Show("Done");
}
catch (Exception ex)
{
MessageBox.Show("Error extracting archive.\n" +
ex.Message);
}
}
从zip文件中提取所有条目的最简单方法如下:
using (ZipFile zip = ZipFile.Read(NameOfExistingZipFile))
{
zip.ExtractAll(args[1]);
}
答案 1 :(得分:-1)
好的,我找到了解决方案。实际上很简单,但在线记录却很少。
public static byte[] Decompress(Stream ms)
{
byte[] outData = null;
using (MemoryStream msInner = new MemoryStream())
{
using (DeflateStream defStream = new DeflateStream(ms, CompressionMode.Decompress))
{
defStream.CopyTo(msInner);
outData = msInner.ToArray();
}
}
return outData;
}