• 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();
                }
            }
    }
  • 相关阅读:
    Vim插件:Unite新手指导(译)
    Java并发编程实战3章
    Centos6.*下安装gcc-4.8.2
    iostat详解
    国内速度比较快的NTP Server
    ssh免密登录配置
    解决卸载移动硬盘问题:umount:/usb1/:device is busy
    Centos查看系统安装日期
    主机IP规划__rsync__inotify
    熟悉OSI七层模型
  • 原文地址:https://www.cnblogs.com/xiandong/p/9858627.html
Copyright © 2020-2023  润新知