java后台生成zip打包文件

/**
     *
     * @param zipFile  压缩包文件对象
     * @param listKey  压缩的图片物理地址
     * @return
     */
    public static boolean packageZip(File zipFile,List<String> listKey){
        //图片打包操作
        ZipOutputStream zipStream = null;
        FileInputStream zipSource = null;
        BufferedInputStream bufferStream = null;
        try {
            zipStream = new ZipOutputStream(new FileOutputStream(zipFile));// 用这个构造最终压缩包的输出流
//            zipSource = null;// 将源头文件格式化为输入流

            for (String picKey : listKey) {

                File file = new File(picKey);
                logger.info("uppic zipFile: " + picKey );
                zipSource = new FileInputStream(file);

                byte[] bufferArea = new byte[1024 * 10];// 读写缓冲区

                // 压缩条目不是具体独立的文件,而是压缩包文件列表中的列表项,称为条目,就像索引一样
                ZipEntry zipEntry = new ZipEntry(file.getName());
                zipStream.putNextEntry(zipEntry);// 定位到该压缩条目位置,开始写入文件到压缩包中

                bufferStream = new BufferedInputStream(zipSource, 1024 * 10);// 输入缓冲流
                int read = 0;

                // 在任何情况下,b[0] 到 b[off] 的元素以及 b[off+len] 到 b[b.length-1]
                // 的元素都不会受到影响。这个是官方API给出的read方法说明,经典!
                while ((read = bufferStream.read(bufferArea, 0, 1024 * 10)) != -1) {
                    zipStream.write(bufferArea, 0, read);
                }
            }
        } catch (Exception e) {
            // TODO: handle exception
            logger.error("zipStream下载文件报错:", e);
            return false;
        } finally {
            // 关闭流
            try {
                if (null != bufferStream)
                    bufferStream.close();
                if (null != zipStream)
                    zipStream.close();
                if (null != zipSource)
                    zipSource.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                //e.printStackTrace();
                logger.error("close stream下载文件报错:", e);
                return false;
            }
        }
        return true;
    }

//test code
List<String> listKey = new ArrayList<String>();
        listKey.add("C:/AtCarPic22/2014-7-10/101165903/0.png");
        listKey.add("C:/AtCarPic22/2014-7-10/101165903/3.png");

        java.io.File zipFile = new java.io.File("D:/DownLoad4.zip");// 最终打包的压缩包
        System.out.println("zipFile exists: " + zipFile.exists());
        System.out.println("zipFile size: " + zipFile.length());
        packageZip(zipFile,listKey);
        System.out.println("zipFile exists2: " + zipFile.exists());
        System.out.println("zipFile size: " + zipFile.length());

java后台生成zip打包文件

时间: 2024-10-19 08:01:39

java后台生成zip打包文件的相关文章

java直接生成zip压缩文件精简代码(跳过txt文件)

/** * @param args */ public static void main(String[] args) throws Exception{ ZipOutputStream zos = null; zos = new ZipOutputStream(new FileOutputStream("c:\\temp7.zip")); String ss = "cName\t\tcCode\t\tcreateDate\n"; ss += "dbc券9

ASP.NET打包生成zip压缩文件

using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.IO; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Drawing2D; using Microsoft.Win32; using

java生成zip压缩文件,解压缩文件

1.生成zip public static void main(String[] args) { try { // testZip("c:\\temp.txt", "c:\\temp4.zip"); // testZip("c:\\Result.txt", "c:\\temp4.zip"); //不然会被一个文件覆盖了. //压缩多个文件的关键: ZipOutputStream out 作为参数传递. //一个流,否则存在覆盖

php生成zip压缩文件的方法,支持文件和压缩包路径查找

/* * new creatZip($_dir,$_zipName); *@ _dir是被压缩的文件夹名称,可使用路径,例 'a'或者'a/test.txt'或者'test.txt' *@ _zipName是压缩后的压缩包名称,可使用路径,例 'a/test.zip'或者'test.zip' **/ class creatZip { private $_dir; private $_zipDir; private $_zipName; public function __construct($d

Java 动态生成 复杂 .doc文件

项目中需要用 java 程序生成doc 文件,百度一番,FreeMarker 的评价比较高,FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出,至于想详细了解 FreeMarker 的请去问百度..... 这篇博文主要是总结自己在用网上例子时遇到的坑.吃水不忘挖井人,还是要感谢分享技术的前辈: 原文链接: http://www.360doc.com/content/13/0731/10/13247663_303740756.shtml [博主博客很漂亮,赞一个] 参

微信APP支付(Java后台生成签名具体步骤)

public class PayCommonUtil { //定义签名,微信根据参数字段的ASCII码值进行排序 加密签名,故使用SortMap进行参数排序 public static String createSign(String characterEncoding,SortedMap<String,String> parameters){ StringBuffer sb = new StringBuffer(); Set es = parameters.entrySet(); Itera

支付宝APP支付(Java后台生成签名具体步骤)

/** *支付宝支付 * @param orderId 订单编号 * @param actualPay 实际支付金额 * @return */ private String getOrderInfoByAliPay(String orderId,float actualPay) { //回调页面 String ali_call_back_url = propertiesService.ALI_CALL_BACK_URL; String seller_id = propertiesService.

支付宝APP支付,Java后台生成的签名的过程

/** *支付宝支付 * @param orderId 订单编号 * @param actualPay 实际支付金额 * @return */ private String getOrderInfoByAliPay(String orderId,float actualPay) { //回调页面 String ali_call_back_url = propertiesService.ALI_CALL_BACK_URL; String seller_id = propertiesService.

支付宝APP支付之Java后台生成签名具体步骤

/** *支付宝支付 * @param orderId 订单编号 * @param actualPay 实际支付金额 * @return */ private String getOrderInfoByAliPay(String orderId,float actualPay) { //回调页面 String ali_call_back_url = propertiesService.ALI_CALL_BACK_URL; String seller_id = propertiesService.