zoukankan      html  css  js  c++  java
  • java代码解压tar.bz2包

    package com.lxd.IO;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
    import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
    import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;
    import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
    import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
    
    public class Demo {
    
        public static void main(String[] args) throws Exception {
            // TODO Auto-generated method stub
            decompressTarBz2(new File("E:\lxd\lxd_LXD_001.tar.bz2"), "E:\lxd\nb");
        }
        public static void decompressTarBz2(File file, String outputDir) throws IOException {
            try (TarArchiveInputStream tarIn =
                         new TarArchiveInputStream(
                                 new BZip2CompressorInputStream(
                                         new FileInputStream(file)))) {
                createDirectory(outputDir, null);
                TarArchiveEntry entry;
                while ((entry = tarIn.getNextTarEntry()) != null) {
                    if (entry.isDirectory()) {
                        createDirectory(outputDir, entry.getName());
                    } else {
                        try (OutputStream out = new FileOutputStream(
                                new File(outputDir + File.separator + entry.getName()))) {
                            writeFile(tarIn, out);
                        }
                    }
                }
            }
        }
          /**
             * 写文件
             *
             * @param in
             * @param out
             * @throws IOException
             */
            public static void writeFile(InputStream in, OutputStream out) throws IOException {
                int length;
                byte[] b = new byte[1024*100];
                while ((length = in.read(b)) != -1) {
                    out.write(b, 0, length);
                }
            }
            /**
             * 创建目录
             *
             * @param outputDir
             * @param subDir
             */
            public static void createDirectory(String outputDir, String subDir) {
                File file = new File(outputDir);
                //子目录不为空
                if (!(subDir == null || subDir.trim().equals(""))) {
                    file = new File(outputDir + File.separator + subDir);
                }
                if (!file.exists()) {
                    if (!file.getParentFile().exists()) {
                        file.getParentFile().mkdirs();
                    }
                    file.mkdirs();
                }
            }
    }
  • 相关阅读:
    常用正则表达式
    C语言的指针与二维数组
    【原创】datalist实现简单分页功能
    【原创】datalist的页脚访问和控制
    [原创]手动删除顽固病毒总结
    [zz]复杂指针解析
    极度郁闷的一次电脑维修经历
    武汉城市地铁规划图
    [转]objc_msgSend 的 ARM 汇编分析
    [转]Cydia and XCode Local App Testing
  • 原文地址:https://www.cnblogs.com/xiandong/p/9858627.html
Copyright © 2011-2022 走看看