有这么差的文档,所以我努力做到这一点
我添加了dll文件和正确的引用
最后,它压缩字符串,但在我解压缩时给出错误
你能告诉我错误在哪里吗?
public static string SevenZip_CompressString(string text)
{
byte[] compressedData = null;
SevenZipCompressor compressor = new SevenZipCompressor();
compressor.CompressionMethod = CompressionMethod.Ppmd;
compressor.CompressionLevel = SevenZip.CompressionLevel.Ultra;
compressor.ScanOnlyWritable = true;
compressor.DefaultItemName = "T";
using (MemoryStream msin = new MemoryStream(Encoding.UTF8.GetBytes(text)))
{
using (MemoryStream msout = new MemoryStream())
{
compressor.CompressStream(msin, msout);
compressedData = msout.ToArray();
}
}
return System.Text.Encoding.UTF8.GetString(compressedData);
}
在这里解压缩
public static string SevenZip_DE_CompressString(string compressedText)
{
byte[] uncompressedbuffer = null;
using (MemoryStream compressedbuffer = new MemoryStream(Encoding.UTF8.GetBytes(compressedText)))
{
using (SevenZipExtractor extractor = new SevenZipExtractor(compressedbuffer))
{
using (MemoryStream msout = new MemoryStream())
{
extractor.ExtractFile(0, msout);
uncompressedbuffer = msout.ToArray();
}
}
}
return Encoding.UTF8.GetString(uncompressedbuffer);
}
这是我收到的错误消息
c#.net 4.5 WPF,
软件包\ SevenZipSharp.0.64 \ lib \ SevenZipSharp.dll
这些是错误的:
System.Text.Encoding.UTF8.GetString(compressedData)
Encoding.UTF8.GetBytes(compressedText)
压缩数据不是UTF-8。而且您不应该尝试将其视为文本。始终将压缩数据以二进制形式存储为byte[]
。如果您需要通过纯文本通道(例如电子邮件)传递它,请使用Base64编码。
但是从根本上,改变您的想法。压缩不是功能string -> string
。是byte[] -> byte[]
。将其视为也是有效的string -> byte[]
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句