loveorgan 2009-01-12 10:55
浏览 446
已采纳

关于java的GZip解压问题

视频系统,关系各终端的播放日志,采用的是定期向服务器上传tar.gz包,然后在服务器上解开,逐条读取放到数据库中。
问题:以前服务器用的是linux系统,解压文件是调用的系统命令tar来解压的,现在因为部分系统要部署到window或苹果上,所以改为用java自己的包来解压。这下出问题了,本来只有三行的记录,解出来之后有四行,第一行的前面是文件名和系统中的很多信息,然后是文件内容,中间隔的是乱码,下载到windows上用文本编辑器打到,,好像中间隔的是空格,用客户端软件ssh到linux上,用vi看,是一个个类似^@样的乱码,然而用正则表达式匹配却不行。
实际数据:
一个tar包,里面是一个log文件,内容是:
\factory\film\真实的谎言\huangyan.vob,2000-01-01 20:43:32,2000-01-01 20:43:39
\factory\film\指环王\zhihuanwang.vob,2000-01-01 22:50:24,2000-01-01 22:50:29
用系统命令的方法,一切正常,但是用GZip的包来解,内容就是这样的:
00e04c0000ba_2001-03-06.log 0100755 0000000 0000000 00000003036 07251305477 013102\factory\film\真实的谎言\huangyan.vob,2000-01-01 20:43:32,2000-01-01 20:43:39
\factory\film\指环王\zhihuanwang.vob,2000-01-01 22:50:24,2000-01-01 22:50:29
真实文件的前面,是文件名以及后面很多不知道是什么信息的信息,最后还有一行,我想用拷贝粘贴的方法,但是粘不出来,不知道为什么。
请问是不是GZIPInputStream或GZIPOutputStream有什么参数?为什么他们解压后有这么多冗余的数据?如何去掉?
谢谢!不好意思,就这点分了
[b]问题补充:[/b]
这是文件,如果能用Gzip解压后的文件与用winzip 或winrar解压后的文件一致,就说明正确了
[b]问题补充:[/b]
文件后缀名为tgz,请修改修改成tgz,当然压缩算法是一样的,我上传文件不行,只能改为gz才能上传成功
[b]问题补充:[/b]
有的朋友说格式不对,但是为什么用winrar或linux的系统命令解压之后的文件内容正常,但是用java的gzip包却多出了很多内容?这是为什么?至少应该结果相同吧?
[b]问题补充:[/b]
用客户端工具压缩之后,再用gzip的包解压,网上的大多程序都能做到正确解压,我得到的是数字电视的机顶盒所上传的日志文件,因为是不同公司之后开发的,所以很难联调,也不清楚具体是用什么压缩的,应该是用linux的命令压缩的
[b]问题补充:[/b]
[color=red]因为我上传的文件格式不支持,所以我是修改了后缀名才上传成功的,下载后请修改成为*.tgz,而不是gz[/color]
[b]问题补充:[/b]
[color=red]根据后缀名来判断,并不是bz2压缩,也许是在包中含了别的信息,但是有一点很奇怪:为什么用系统命令解压或用工具解压,都没有这些信息呢?为什么用GZip还解压,就会有呢?这是为什么?[/color]

  • 写回答

8条回答

  • bohemia 2009-01-12 11:27
    关注

    String fileName = "gzip.file.gz";
    BufferedReader gzipReader = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream(fileName))));
    String tmp = null;
    while((tmp=gzipReader.readLine())!=null){
    System.out.println("文件行:"+tmp);
    }
    我这样试了试,是可以的;
    你是怎么读取的?

    难道跟服务器的编码有关?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

悬赏问题

  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧