C# 如何使用SevenZip-7Zip压缩/解压缩字符串
文档太差了,所以我很难运行它 我添加了dll文件和正确的引用 最后它压缩字符串,但在我解压缩时给出错误C# 如何使用SevenZip-7Zip压缩/解压缩字符串,c#,7zip,sevenzipsharp,text-compression,C#,7zip,Sevenzipsharp,Text Compression,文档太差了,所以我很难运行它 我添加了dll文件和正确的引用 最后它压缩字符串,但在我解压缩时给出错误 public static string SevenZip_DE_CompressString(string compressedText) { byte[] uncompressedbuffer = null; using (MemoryStream compressedbuffer = new MemoryStream(Encoding.U
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);
}
你能告诉我错误在哪里吗
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
packages\SevenZipSharp.0.64\lib\SevenZipSharp.dll
这些都是错误的:
System.Text.Encoding.UTF8.GetString(compressedData)
Encoding.UTF8.GetBytes(compressedText)
压缩数据不是UTF-8。你不应该把它当作文本。始终以二进制形式存储压缩数据,如字节[]
。如果需要通过纯文本通道(如电子邮件)传递,请使用Base64编码
但从根本上说,改变你的想法。压缩不是一个函数
string->string
。它是byte[]->byte[]
。将其视为<>代码> String >字节[]/Calp>.< /P>也是有效的,您是否从视图细节检查了EnEnter异常…你发布的异常窗口底部的链接?我不知道为什么,但我很确定你会在上一个关于DB压缩的问题之后问这个问题……@SivaGopal内部异常是null@Mat如果你知道答案,我很感激it@MonsterMMORPG我没有答案,但我怀疑你发现了一个问题,2分钟后你来到这里让其他人做你的调查。。。我的意思是,在问问题之前花点时间(1-2个小时,做你的试错)。这只是一个建议……:)我说——将压缩数据存储为byte[]
。是的,就像您可以将其存储在SQL server中一样:),但我根据您所说的解决了问题。