//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贡献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();
慕尼黑的夜晚无繁华
TA贡献1864条经验 获得超6个赞
FileStream stream = new FileStream(unzipfilename, FileMode.Create); 这句是创建文件
GZipStream uncompressed = new GZipStream(stream, CompressionMode.Decompress);
那这个是在哪指定需要解压缩的文件
幕布斯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);
报错了
- 16 回答
- 0 关注
- 529 浏览
添加回答
举报
0/150
提交
取消