本文共 2297 字,大约阅读时间需要 7 分钟。
package test;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.zip.GZIPOutputStream;import org.apache.commons.compress.archivers.tar.TarArchiveEntry;import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;import org.apache.commons.compress.utils.IOUtils;public class DaBao_tar_gz { /** * * @Title: pack * @Description: 将一组文件打成tar包 * @param sources * 要打包的原文件数组 * @param target * 打包后的文件 * @return File 返回打包后的文件 * @throws */ public File pack(File[] sources, File target) { FileOutputStream out = null; try { out = new FileOutputStream(target); } catch (FileNotFoundException e1) { e1.printStackTrace(); } TarArchiveOutputStream os = new TarArchiveOutputStream(out); for (File file : sources) { try { os.putArchiveEntry(new TarArchiveEntry(file)); IOUtils.copy(new FileInputStream(file), os); os.closeArchiveEntry(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } if (os != null) { try { os.flush(); os.close(); System.out.println("打包后文件为:" + target); } catch (IOException e) { e.printStackTrace(); } } return target; } /** * * @Title: compress * @Description: 将文件用gzip压缩 * @param source * 需要压缩的文件 * @return File 返回压缩后的文件 * @throws */ public File compress(File source) { File target = new File(source.getName() + ".gz"); FileInputStream in = null; GZIPOutputStream out = null; try { in = new FileInputStream(source); out = new GZIPOutputStream(new FileOutputStream(target)); byte[] array = new byte[1024]; int number = -1; while ((number = in.read(array, 0, array.length)) != -1) { out.write(array, 0, number); } } catch (FileNotFoundException e) { e.printStackTrace(); return null; } catch (IOException e) { e.printStackTrace(); return null; } finally { if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); return null; } } if (out != null) { try { out.close(); System.out.println("打包后文件为:" + target); } catch (IOException e) { e.printStackTrace(); return null; } } } return target; }}
转载地址:http://pkegi.baihongyu.com/