C# 使用Deflate压缩和解压字符串
我需要把绳子拉上拉下 以下是代码:C# 使用Deflate压缩和解压字符串,c#,.net,deflatestream,C#,.net,Deflatestream,我需要把绳子拉上拉下 以下是代码: public static byte[] ZipStr(String str) { using (MemoryStream output = new MemoryStream()) using (DeflateStream gzip = new DeflateStream(output, CompressionMode.Compress)) using (StreamWriter writer = new StreamWriter(gz
public static byte[] ZipStr(String str)
{
using (MemoryStream output = new MemoryStream())
using (DeflateStream gzip = new DeflateStream(output, CompressionMode.Compress))
using (StreamWriter writer = new StreamWriter(gzip))
{
writer.Write(str);
return output.ToArray();
}
}
及
UnZipStr方法似乎存在错误。有人能帮我吗 有两个不同的问题。首先,在
ZipStr
中,您需要刷新或关闭StreamWriter
并关闭DeflateStream
,然后才能从内存流中读取
其次,在UnZipStr
中,您正在从inputStream
中的压缩字节构造结果字符串。您应该返回reader.ReadToEnd()
的结果
在StreamWriter
和StreamReader
构造函数中指定字符串编码也是一个好主意
请尝试以下代码:
public static byte[] ZipStr(String str)
{
using (MemoryStream output = new MemoryStream())
{
using (DeflateStream gzip =
new DeflateStream(output, CompressionMode.Compress))
{
using (StreamWriter writer =
new StreamWriter(gzip, System.Text.Encoding.UTF8))
{
writer.Write(str);
}
}
return output.ToArray();
}
}
public static string UnZipStr(byte[] input)
{
using (MemoryStream inputStream = new MemoryStream(input))
{
using (DeflateStream gzip =
new DeflateStream(inputStream, CompressionMode.Decompress))
{
using (StreamReader reader =
new StreamReader(gzip, System.Text.Encoding.UTF8))
{
return reader.ReadToEnd();
}
}
}
}
您是否遇到编译器错误、异常或其他问题?你能提供更多关于“错误”的详细信息吗?@MikhailZipStr
也有问题。我已经更新了我的答案。@PhilRoss非常感谢,但我有一个问题。如何做到这一点多线程?使用第三方物流?
public static byte[] ZipStr(String str)
{
using (MemoryStream output = new MemoryStream())
{
using (DeflateStream gzip =
new DeflateStream(output, CompressionMode.Compress))
{
using (StreamWriter writer =
new StreamWriter(gzip, System.Text.Encoding.UTF8))
{
writer.Write(str);
}
}
return output.ToArray();
}
}
public static string UnZipStr(byte[] input)
{
using (MemoryStream inputStream = new MemoryStream(input))
{
using (DeflateStream gzip =
new DeflateStream(inputStream, CompressionMode.Decompress))
{
using (StreamReader reader =
new StreamReader(gzip, System.Text.Encoding.UTF8))
{
return reader.ReadToEnd();
}
}
}
}