Java将文本文件压缩为tar.gz

    /**
     * @功能描述 压缩tar.gz 文件
     * @param sources 源文件集合
     * @param outPath 目标文件名称 无后缀的 例子 G:\backup\logstash-2020.04.22
     * @return 返回压缩结果
     * @throws Exception
     */
    public static void packet(String[] sources, String outPath) throws Exception {
        // gz文件 名称  TAR GZ 就是 .tar.gz
        String gzPath = String.format("%s%s%s",outPath, TAR, GZ);
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        TarArchiveOutputStream tarArchiveOutputStream = null;
        GZIPOutputStream gzipOutputStream = null;
        try {
            tarArchiveOutputStream = new TarArchiveOutputStream(byteArrayOutputStream);
            // 将所有文件打包成 tar文件
            try {
                for (String source : sources) {
                    File file = new File(source);
                    tarArchiveOutputStream.putArchiveEntry(new TarArchiveEntry(file, file.getName()));
                    IOUtils.copy(new FileInputStream(file), tarArchiveOutputStream);
                    tarArchiveOutputStream.closeArchiveEntry();
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if(tarArchiveOutputStream != null) {
                    tarArchiveOutputStream.flush();
                    tarArchiveOutputStream.close();
                }
            }
            gzipOutputStream = new GZIPOutputStream(new FileOutputStream(gzPath));
            gzipOutputStream.write(byteArrayOutputStream.toByteArray());
        } finally {
            if(byteArrayOutputStream != null) {
                byteArrayOutputStream.close();
            }
            if(gzipOutputStream != null) {
                gzipOutputStream.flush();
                gzipOutputStream.close();
            }
        }
    }

 

posted @ 2020-04-23 17:20  eros_token  阅读(936)  评论(0编辑  收藏  举报