解压时候报 GZip 头中的幻数不正确。请确保正在传入 GZip 流

CloudOfFly 2009-12-15 04:11:55

public static Stream CompressStream(Stream stream)
{
if (stream == null)
{
throw new ArgumentNullException("stream");
}
//压缩流
GZipStream gzipStream = new GZipStream(stream, CompressionMode.Compress,true);
//将缓冲区中的数据刷新到基础流
gzipStream.Flush();
//返回压缩流对象
return gzipStream;

}

/// <summary>
/// 解压流操作
/// </summary>
/// <param name="stream">需要解压的流对象</param>
/// <returns>返回解压GZipStream流对象</returns>
public static Stream DecompressStream(Stream stream)
{
if (stream == null)
{
throw new ArgumentNullException("stream");
}

GZipStream gzipStream = new GZipStream(stream, CompressionMode.Decompress);
gzipStream.Flush();
return gzipStream;
}


//创建一个编码对象
UTF8Encoding uniEncoding = new UTF8Encoding();
//将字符串编码成字节序列
byte[] firstString = uniEncoding.GetBytes("Invalid file path characters are: ");
MemoryStream memoryStream = new MemoryStream();

// 将字节数组写入到当前流中.
memoryStream.Write(firstString, 0, firstString.Length);

用上面生成一个流 对其加密 加密后解密 就报 GZip 头中的幻数不正确。请确保正在传入 GZip 流
错误
...全文
2355 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq4004229 2012-02-02
  • 打赏
  • 举报
回复
我也是这个问题,急求答案!!!
fh6880374 2011-02-17
  • 打赏
  • 举报
回复
我也是这个问题,急求答案!!!
hong320 2010-01-06
  • 打赏
  • 举报
回复
我也是这个问题,急求答案!!!
guyehanxinlei 2009-12-16
  • 打赏
  • 举报
回复
开源的SharpZipLib还是不错的。
CloudOfFly 2009-12-16
  • 打赏
  • 举报
回复
...
CloudOfFly 2009-12-15
  • 打赏
  • 举报
回复
......
CloudOfFly 2009-12-15
  • 打赏
  • 举报
回复
...
wjy217213 2009-12-15
  • 打赏
  • 举报
回复
UP
qldsrx 2009-12-15
  • 打赏
  • 举报
回复
显然你的CompressStream用法有误,那个不是返回压缩流对象,你将要压缩的原始stream流放入了GZipStream初始化中,变成了输出流了,真正要返回的压缩流对象是GZipStream初始化中的第一个参数。
        #region 压缩解压object
public static byte[] CompressionObject(object DataOriginal)
{
if (DataOriginal == null) return null;
BinaryFormatter bFormatter = new BinaryFormatter();
MemoryStream mStream = new MemoryStream();
bFormatter.Serialize(mStream, DataOriginal);
byte[] bytes = mStream.ToArray();
MemoryStream oStream = new MemoryStream();
DeflateStream zipStream = new DeflateStream(oStream, CompressionMode.Compress);
zipStream.Write(bytes, 0, bytes.Length);
zipStream.Flush();
zipStream.Close();
return oStream.ToArray();
}

public static object DecompressionObject(byte[] bytes)
{
if (bytes == null) return null;
MemoryStream mStream = new MemoryStream(bytes);
mStream.Seek(0, SeekOrigin.Begin);
DeflateStream unZipStream = new DeflateStream(mStream, CompressionMode.Decompress, true);
object dsResult = null;
BinaryFormatter bFormatter = new BinaryFormatter();
dsResult = (object)bFormatter.Deserialize(unZipStream);
return dsResult;
}
#endregion
  • 打赏
  • 举报
回复
用SharpZipLib好了,一个函数搞定
woshifou 2009-12-15
  • 打赏
  • 举报
回复
顶下。

110,577

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧