Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Deflate压缩和解压字符串_C#_.net_Deflatestream - Fatal编程技术网

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();
            }
        }
    }
}

您是否遇到编译器错误、异常或其他问题?你能提供更多关于“错误”的详细信息吗?@Mikhail
ZipStr
也有问题。我已经更新了我的答案。@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();
            }
        }
    }
}