如何解压缩.gz文件

 //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个日志文件,解压出来的文件是空文件里面什么内容都没有

求各位大神帮看看有什么问题

吃鸡游戏
浏览 530回答 16
16回答

翻过高山走不出你

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

潇湘沐

这个好像没有什么改动把

慕容3067478

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

饮歌长啸

用 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();

慕尼黑的夜晚无繁华

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

蝴蝶不菲

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

幕布斯7119047

@dudu: FileStream stream = new FileStream("D:\\log\\2012-07-02-0000-2330.log.gz", FileMode.Open);是这样运行到 uncompressed.Write(bytes, 0, bytes.Length); 报错了

摇曳的蔷薇

@飒沓如流星:  用System.IO.File.OpenRead,参考:GZipStream and decompression

SMILET

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

慕森卡

@dudu: 晕啊,现在这样不还是和我上面的一样
打开App,查看更多内容
随时随地看视频慕课网APP