C# 解压问题,GZipStream

C# 解压问题,GZipStream,c#,gzip,memorystream,gzipstream,C#,Gzip,Memorystream,Gzipstream,我对decomress gzip有问题: string fileData = string.Empty; // byte[] starts with 31 and 139 var gzBuffer = entity.Data.Skip(pos).ToArray(); using (GZipStream stream = new GZipStream(new MemoryStream(gzBuffer),CompressionMode.Decompress)) { const int s

我对decomress gzip有问题:

string fileData = string.Empty;
// byte[] starts with 31 and 139
var gzBuffer = entity.Data.Skip(pos).ToArray(); 
using (GZipStream stream = new GZipStream(new MemoryStream(gzBuffer),CompressionMode.Decompress))
{
    const int size = 4096;
    byte[] buffer = new byte[size];
    using (MemoryStream memory = new MemoryStream())
    {
        int count = 0;
        do
        {
            count = stream.Read(buffer, 0, size);
            if (count > 0)
            {
                memory.Write(buffer, 0, count);
            }
        } while (count > 0);
        fileData = Encoding.UTF8.GetString(memory.ToArray());
    }
}
在调试器中,计数始终等于0。问题在哪里?
谢谢。

我不确定这对你是否有帮助,但我会尽力的。这就是我在一个示例项目中使用GZIP压缩/解压缩文件的方法。也许您可以根据自己的需要修改此代码

public string Compress(FileInfo fi)
{
    string outPath;

    using (FileStream inFile = fi.OpenRead())
    {
        outPath = fi.FullName + ".gz";
        using (FileStream outFile = File.Create(outPath))
        {
            using (var compress = new GZipStream(outFile, 
                                                 CompressionMode.Compress))
            {
                inFile.CopyTo(compress);
            }
        }
    }

    return outPath;
}

public void Decompress(FileInfo fi)
{
    using (FileStream inFile = fi.OpenRead())
    {
        string curFile = fi.FullName;
        string origName = curFile.Remove(curFile.Length - fi.Extension.Length);

        using (FileStream outFile = File.Create(origName))
        {
            using (var decompress = new GZipStream(inFile, 
                                                   CompressionMode.Decompress))
            {
                decompress.CopyTo(outFile);
            }
        }
    }
}

这条流是如何压缩的?I'v在过去也遇到过这个问题,错误实际上在压缩逻辑中。您检查过gzbuffer吗?也许它是空的。@Jan-Peter Vos:我不能肯定,因为信息来自网络。@LightWing:是的,我查过了。它包含数据HMMM。。。我看不到任何明显的东西。。。首先想到的是数据。你能举例说明gzBuffer是什么吗?