package com.baidu.disconf.web.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Date; import java.util.List; import org.apache.commons.compress.archivers.tar.TarArchiveEntry; import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream; import org.apache.commons.compress.compressors.CompressorException; import org.apache.commons.io.IOUtils; import com.baidu.dsp.common.constant.DataFormatConstants; import com.github.knightliao.apollo.utils.io.OsUtil; import com.github.knightliao.apollo.utils.time.DateUtils; /** * @author liaoqiqi * @version 2014-9-15 */ public class TarUtils { /** * @param fileList * * @return * * @throws IOException * @throws CompressorException */ public static String tarFiles(String dir, String fileNamePrefix, List<File> fileList) throws IOException, CompressorException { // OsUtil.makeDirs(dir); // 时间 String curTime = DateUtils.format(new Date(), DataFormatConstants.COMMON_TIME_FORMAT); // 文件名 String outputFilePath = fileNamePrefix + "_" + curTime + ".tar.gz"; File outputFile = new File(dir, outputFilePath); FileOutputStream out = null; out = new FileOutputStream(outputFile); // // 进行打包 // TarArchiveOutputStream os = new TarArchiveOutputStream(out); for (File file : fileList) { os.putArchiveEntry(new TarArchiveEntry(file, file.getName())); IOUtils.copy(new FileInputStream(file), os); os.closeArchiveEntry(); } if (os != null) { try { os.flush(); os.close(); } catch (IOException e) { e.printStackTrace(); } } return outputFile.getAbsolutePath(); } }