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();
                }
            }
    }
  • 相关阅读:
    jquery UI_tabs
    乔布斯传
    微信小程序
    天气预报相关参数
    ASP.NET MVC TempData使用心得
    jquery.restrictFieldLength.js
    join Linq
    SQL_关联映射
    介绍几个好用的vs插件
    DependencyResolver.Current
  • 原文地址:https://www.cnblogs.com/xiandong/p/9858627.html
Copyright © 2011-2022 走看看