分享

文件压缩类

 花千骨DC 2016-12-01
package com.bq.chzd.web.utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
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;

/**
 * 文件压缩类
 * @author zhaohong.Luo
 *
 */
public class GZIPUtils {

/**
* 文件压缩类
* @param source
* @return
*/
public static 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();
               } catch (IOException e) {
                   e.printStackTrace();
                   return null;
               }
           }
       }
       return target;
   }
/**
 * 文件打包
 * @param sources
 * @param target
 * @return
 */
public static File pack(List<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 {
//解决中文乱码
            String fileName = new String(file.getAbsolutePath().getBytes("GBK"),"ISO-8859-1");
               System.out.println(fileName);
               os.putArchiveEntry(new TarArchiveEntry(file,fileName));
               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();
           } catch (IOException e) {
               e.printStackTrace();
           }
       }

       return target;
   }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多