满店香的家

学习+实践=进步

使用commons-compress包对tar.gz文件进行解压处理

    想使用commons-compress-1.4.1.jar对tar.gz文件进行处理,上网找半天,别人写的都很费劲,看了看样例,自己写了一个方法。
 /**
  * 解压tar.gz文件
  * tar文件只是把多个文件或文件夹打包合成一个文件,本身并没有进行压缩。gz是进行过压缩的文件。
  * @param dir
  * @param filepath
  * @throws Exception
  */
 public static void deGzipArchive(String dir, String filepath)
   throws Exception {
  final File input = new File(filepath);
  final InputStream is = new FileInputStream(input);
  final CompressorInputStream in = new GzipCompressorInputStream(is, true);
  TarArchiveInputStream tin = new TarArchiveInputStream(in);
  TarArchiveEntry entry = tin.getNextTarEntry();
  while (entry != null) {
   File archiveEntry = new File(dir, entry.getName());
   archiveEntry.getParentFile().mkdirs();
   if (entry.isDirectory()) {
    archiveEntry.mkdir();
    entry = tin.getNextTarEntry();
    continue;
   }
   OutputStream out = new FileOutputStream(archiveEntry);
   IOUtils.copy(tin, out);
   out.close();
   entry = tin.getNextTarEntry();
  }
  in.close();
  tin.close();
 }

遗留问题:

 tar解压tar.gz文件时,中文文件夹有乱码
 研究发现commpress包解压时,TarArchiveInputStream类对中文未做处理,进一步跟踪,第一层是

utf8,正确,往下取,需要包括子文件夹,子文件,涉及到"/"等符号的切割,这个地方未考虑中文
据说ant没问题

posted on 2012-06-15 12:12 满店香 阅读(6781) 评论(1)  编辑  收藏

Feedback

# re: 使用commons-compress包对tar.gz文件进行解压处理 2012-06-15 12:16 ppt模板下载

可以去加压后再看看的  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: