• 大小: 1.77MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-16
  • 语言: Java
  • 标签: java  解压缩  7z  

资源简介

该文件为java版的7z解压缩工具,目前已经支持tar,7z,gz等格式的代码解压缩

资源截图

代码片段和文件信息

package com.yozo.zip;

import java.io.BufferedOutputStream;
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.sevenz.SevenZArchiveEntry;
import org.apache.commons.compress.archivers.sevenz.SevenZFile;
import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
import org.apache.commons.compress.compressors.CompressorInputStream;
import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
import org.apache.commons.compress.utils.IOUtils;

/**
 * 解压 tar 7z gz 格式的压缩包文件
 * @author 许玉康
 *
 */

public class Tar7zGzUtils {

/**
 * 解压tar文件
 * 
 * @param orgPath
 * @param tarpath
 * @return
 * @throws Exception 
 */
public Boolean extTarFileList(String orgPath String tarpath) {
Boolean result = false;
createFile(tarpath);
TarArchiveInputStream tais = null;
try {
File srcFile = new File(orgPath);
tais = new TarArchiveInputStream(new FileInputStream(srcFile));
TarArchiveEntry entry = null;
        while ((entry = tais.getNextTarEntry()) != null) {
            // 文件
            String dir = tarpath + entry.getName();
            File dirFile = new File(dir);
            // 文件检查
            fileProber(dirFile);
            if (entry.isDirectory()) {
                dirFile.mkdirs();
            } else {
                dearchiveFile(dirFile tais);
            }
        }
        result = true;
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
                if(tais != null){
                 tais.close();
                }
            } catch (IOException e) {}
}
return result;
}

/**
 * 创建文件
 */
private void createFile(String filePath) {
File dFile = new File(filePath);
if (!dFile.exists()) {
dFile.mkdirs();
}
}

/** 
     * 文件解归档 (输出到目标文件中)
     */  
    private void dearchiveFile(File destFile TarArchiveInputStream tais) {
     BufferedOutputStream bos = null;
     try {
     bos = new BufferedOutputStream(new FileOutputStream(destFile));
            int count;
            byte data[] = new byte[1024];
            while ((count = tais.read(data 0 1024)) != -1) {
             bos.write(data 0 count);
            }
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(bos != null) {
bos.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
    }

/** 
     * 文件探针 
     */  
    private void fileProber(File dirFile) {  
        File parentFile = dirFile.getParentFile();  
        if (!parentFile.exists()) {
            // 递归寻找上级目录  
            fileProber(parentFile);  
            parentFile.mkdir();  
        }
    }


//7z格式解压
public

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件     1438086  2018-07-05 09:49  7z1805-x64.exe
     文件      378217  2018-07-05 11:11  commons-compress-1.9.jar
     文件        6286  2018-07-06 14:00  Tar7zGzUtils.java
     文件       99555  2018-07-05 11:13  xz-1.5.jar

评论

共有 条评论