C#中如何解压gzip压缩后的字符流?

qugui 2005-12-24 12:51:57
我现在得到一网页返回的流是gzip压缩的,我想要解压后显示原来的内容,请高手赐教.
...全文
1422 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
marvelstack 2005-12-25
  • 打赏
  • 举报
回复
http://hardrock.cnblogs.com/archive/2005/12/23/303209.html
qugui 2005-12-24
  • 打赏
  • 举报
回复
你们说的不行呀,的到的数据在IE里面可以解开,但在程序里解不开.
tangyong12 2005-12-24
  • 打赏
  • 举报
回复
/// <summary>
/// 压缩文件流
/// </summary>
/// <param name="uncompressedString"></param>
/// <returns></returns>
static public string Compress(string uncompressedString)
{
byte[] byteData = System.Text.Encoding.UTF8.GetBytes(uncompressedString);
MemoryStream ms = new MemoryStream();
Stream s = new GZipOutputStream(ms);
s.Write(byteData,0,byteData.Length);
s.Close();
byte[] compressData = (byte[])ms.ToArray();
ms.Flush();
ms.Close();
return System.Convert.ToBase64String(compressData,0,compressData.Length);
}

/// <summary>
/// 减压文件流
/// </summary>
/// <param name="comppressedString"></param>
/// <returns></returns>
static public string DeCompress(string comppressedString)
{
int size = 0;
string uncompressString = string.Empty;
StringBuilder sb = new StringBuilder(40960);
int totalLength = 0;
byte[] byteInput = System.Convert.FromBase64String(comppressedString);
byte[] writeData = new byte[4096];
Stream s = new GZipInputStream(new MemoryStream(byteInput));
while(true)
{
size = s.Read(writeData,0,writeData.Length);
if(size > 0)
{
totalLength += size;
sb.Append(System.Text.Encoding.UTF8.GetString(writeData,0,size));
}
else
{
break;
}
}
s.Flush();
s.Close();
return sb.ToString();
}
singlepine 2005-12-24
  • 打赏
  • 举报
回复
http://dev.csdn.net/develop/article/67/article/63/63929.shtm
c11_11_11 2005-12-24
  • 打赏
  • 举报
回复
帮你顶 顺便接点分
ah__fu 2005-12-24
  • 打赏
  • 举报
回复
using ICSharpCode.SharpZipLib.GZip;

public static byte[] Compress(Stream Source)
{
Debug.Assert(null != Source);
Source.Seek(0, SeekOrigin.Begin);
MemoryStream objMem = new MemoryStream();
GZipOutputStream objGzip = new GZipOutputStream(objMem);

const int BUFFER_SIZE = 1024 * 10;
byte[] arrBuffer = new byte[BUFFER_SIZE];
int nGetedCount = 0;
do
{
nGetedCount = Source.Read(arrBuffer, 0, BUFFER_SIZE);
objGzip.Write(arrBuffer, 0, nGetedCount);
} while(nGetedCount>0);
objGzip.Finish();
byte[] arrResult = objMem.ToArray();
objGzip.Close(); //压缩完成后,输出流就会被关闭
objGzip = null;
objMem.Close();
objMem = null;
return arrResult;
}

110,536

社区成员

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

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

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