为了账号安全,请及时绑定邮箱和手机立即绑定

如何解压缩.gz文件

如何解压缩.gz文件

吃鸡游戏 2018-12-06 15:21:17
 //zipfilename是.gz所在路径,unzipfilename是解压文件的文件名 private void UnGzipFile(string zipfilename, string unzipfilename)        {             string dir = "";            //解压文件夹为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹               if (dir == "")                dir = zipfilename.Replace(Path.GetFileName(zipfilename), Path.GetFileNameWithoutExtension(zipfilename));            if (!dir.EndsWith("//"))                dir += "//";            if (!Directory.Exists(dir))                Directory.CreateDirectory(dir);            //创建压缩文件的输入流实例            using (GZipInputStream zipFile = new GZipInputStream(File.OpenRead(zipfilename)))            {                //创建目标文件的流                using (FileStream destFile = File.Open(dir+ unzipfilename, FileMode.Create))                {                     int buffersize = 2048;//缓冲区的尺寸,一般是2048的倍数                    byte[] FileData = new byte[buffersize];//创建缓冲数据                    while (buffersize > 0)//一直读取到文件末尾                    {                        buffersize = zipFile.Read(FileData, 0, buffersize);//读取压缩文件数据                        destFile.Write(FileData, 0, buffersize);//写入目标文件                    }                }            }        } 引用using ICSharpCode.SharpZipLib.GZip; .gz压缩包里面就有1个日志文件,解压出来的文件是空文件里面什么内容都没有 求各位大神帮看看有什么问题
查看完整描述

16 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

问题找到了ICSharpCode.SharpZipLib.dll有问题,重新找了个地址下载就OK了

查看完整回答
反对 回复 2019-01-21
?
潇湘沐

TA贡献1816条经验 获得超6个赞

这个好像没有什么改动把

查看完整回答
反对 回复 2019-01-21
?
慕容3067478

TA贡献1773条经验 获得超3个赞

是不是压缩格式有问题。或者 是还缺少什么参数。在初始化 GZipInputStream 的时候。

查看完整回答
反对 回复 2019-01-21
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

用 GZipStream 试试,参考代码(代码来源):

FileStream stream = new FileStream(unzipfilename, FileMode.Create); 
GZipStream uncompressed = new GZipStream(stream, CompressionMode.Decompress);

uncompressed.Write(bytes,0,bytes.Length); 
uncompressed.Flush();
uncompressed.Close();

stream.Dispose();
查看完整回答
反对 回复 2019-01-21
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

FileStream stream = new FileStream(unzipfilename, FileMode.Create); 这句是创建文件
GZipStream uncompressed = new GZipStream(stream, CompressionMode.Decompress);
那这个是在哪指定需要解压缩的文件

查看完整回答
反对 回复 2019-01-21
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

@飒沓如流星: stream, 以流的方式读取需要解压缩的文件

查看完整回答
反对 回复 2019-01-21
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

@dudu: FileStream stream = new FileStream("D:\\log\\2012-07-02-0000-2330.log.gz", FileMode.Open);
是这样运行到

uncompressed.Write(bytes, 0, bytes.Length);

报错了

查看完整回答
反对 回复 2019-01-21
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

@飒沓如流星: 

用System.IO.File.OpenRead,参考:GZipStream and decompression

查看完整回答
反对 回复 2019-01-21
?
SMILET

TA贡献1796条经验 获得超4个赞

@飒沓如流星: 接下来问题你来搞定,参考文章:C# 温故而知新:Stream篇 (四)

查看完整回答
反对 回复 2019-01-21
?
慕森卡

TA贡献1806条经验 获得超8个赞

@dudu: 晕啊,现在这样不还是和我上面的一样

查看完整回答
反对 回复 2019-01-21
?
Qyouu

TA贡献1786条经验 获得超11个赞

@飒沓如流星: 如果还是解决不了,建议把这部分代码打包一下提供下载,这样别人可以在自己的机器上调试一下

查看完整回答
反对 回复 2019-01-21
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

@dudu: 好像只能上传图片,没有上传文件的功能

查看完整回答
反对 回复 2019-01-21
  • 16 回答
  • 0 关注
  • 529 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信