把字节数组_byCompressed解压缩,Read时返回值为0        private void btnDecompress_Click(object sender, EventArgs e)
        {
            // 内存数据流
            MemoryStream memStream = new MemoryStream(_byCompressed);
            memStream.Position = 0;            // 解压缩数据流
            byte[] byBuffer = new byte[1024];
            DeflateStream deflateStream = new DeflateStream(memStream, CompressionMode.Decompress, true);
            int nLen = deflateStream.Read(byBuffer, 0, 1024);// 读完nLen=0
            
            // 关闭数据流
            deflateStream.Close();
            memStream.Close();            // 显示还原后的数据,这个函数就不用管了
            ShowBytes(tbDecompressed, byBuffer, nLen);
        }

解决方案 »

  1.   

    问题是以下这句int nLen = deflateStream.Read(byBuffer, 0, 1024);// 读完nLen=0返回值总是0,也就是没有读出数据,为什么啊。_byCompressed的长度不是0,我实验中是132。
      

  2.   

    MemoryStream ms = new MemoryStream();
    DeflateStream compressedzipStream = new DeflateStream(ms ,  CompressionMode.Compress, true);
      compressedzipStream.Write(buffer, 0, buffer.Length);
      compressedzipStream.Close();
      ms.Position = 0;
      DeflateStream zipStream = new DeflateStream(ms, CompressionMode.Decompress);
      byte[] decompressedBuffer = new byte[buffer.Length + 100];
      int totalCount = DeflateTest.ReadAllBytesFromStream(zipStream, decompressedBuffer);
      

  3.   

    DeflateTest.ReadAllBytesFromStream(zipStream, decompressedBuffer);是怎么实现的?我用zipStream.Read(decompressedBuffer, 0, nLen);还是不行。再就是你在compressedzipStream.Write(buffer, 0, buffer.Length);的时候,不是把要解压缩的数据又压缩了一遍吗?