zoukankan      html  css  js  c++  java
  • Java 压缩文件

    1、controller

      

            response.setContentType("APPLICATION/OCTET-STREAM");  
            response.setHeader("Content-Disposition","attachment; filename="+ DateUtil.getDate()+".zip");
            ZipOutputStream out = new ZipOutputStream(response.getOutputStream());
        	Calendar c = Calendar.getInstance();
            try {
            	for(Map<String, Object> m : list){
            		String uniqueid = m.get("uniqueid").toString();
            		//解析uniqueid  1530405990.12257796
            		String arr[] = uniqueid.split("\.");
            		String datastr = arr[0]+"000";
            		c.setTimeInMillis(Long.parseLong(datastr));
            		String Y = String.valueOf(c.get(Calendar.YEAR));
            		String M;
            		String D;
            		int month = c.get(Calendar.MONTH) + 1;
            		int day = c.get(Calendar.DAY_OF_MONTH);
            		if(month<10){
            			M = "0"+month;
            		}else{
            			M = String.valueOf(month);
            		}
            		if(day<10){
            			D = "0"+day;
            		}else{
            			D = String.valueOf(day);
            		}
            		String url = Y+M+"/"+D+"/"+uniqueid+".WAV";
            		url = recordUrl+url;
            		ZipUtils.doCompress(request,url, out,uniqueid+".WAV");
            		response.flushBuffer();
            	}
            } catch (Exception e) {
                e.printStackTrace();
            }finally{
                out.close();
            }
    

     2、ziputils

    package com.nilecom.utils;
    
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.URISyntaxException;
    import java.net.URL;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    
    import javax.servlet.http.HttpServletRequest;
    
    import org.bouncycastle.util.encoders.UrlBase64;
    
    public class ZipUtils {
        
        private ZipUtils(){
        }
        
        public static void doCompress(String srcFile, String zipFile) throws IOException {
            doCompress(new File(srcFile), new File(zipFile));
        }
        
        /**
         * 文件压缩
         * @param srcFile 目录或者单个文件
         * @param zipFile 压缩后的ZIP文件
         */
        public static void doCompress(File srcFile, File zipFile) throws IOException {
            ZipOutputStream out = null;
            try {
                out = new ZipOutputStream(new FileOutputStream(zipFile));
                doCompress(srcFile, out);
            } catch (Exception e) {
                throw e;
            } finally {
                out.close();//记得关闭资源
            }
        }
        
        public static void doCompress(HttpServletRequest request,String filelName, ZipOutputStream out,String name) throws IOException, URISyntaxException{
         //下面是网络路径 先从吧文件下载到本地在进行压缩 URL url = new URL(filelName); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); InputStream inputStream = conn.getInputStream(); byte[] buffer = new byte[1024*10]; int len = 0; String filePath = request.getSession().getServletContext().getRealPath("/")+"download\"; File saveDir = new File(filePath); if(!saveDir.exists()){ saveDir.mkdir(); } File file = new File(filePath+name); FileOutputStream bos = new FileOutputStream(file); while((len = inputStream.read(buffer)) != -1) { bos.write(buffer, 0, len); } doCompress(file, out); bos.close(); inputStream.close(); } public static void doCompress(File file, ZipOutputStream out) throws IOException{ doCompress(file, out, ""); } public static void doCompress(File inFile, ZipOutputStream out, String dir) throws IOException { if ( inFile.isDirectory() ) { File[] files = inFile.listFiles(); if (files!=null && files.length>0) { for (File file : files) { String name = inFile.getName(); if (!"".equals(dir)) { name = dir + "/" + name; } ZipUtils.doCompress(file, out, name); } } } else { ZipUtils.doZip(inFile, out, dir); } } public static void doZip(File inFile, ZipOutputStream out, String dir) throws IOException { String entryName = null; if (!"".equals(dir)) { entryName = dir + "/" + inFile.getName(); } else { entryName = inFile.getName(); } ZipEntry entry = new ZipEntry(entryName); out.putNextEntry(entry); int len = 0 ; byte[] buffer = new byte[1024]; FileInputStream fis = new FileInputStream(inFile); while ((len = fis.read(buffer)) > 0) { out.write(buffer, 0, len); out.flush(); } out.closeEntry(); fis.close(); } public static void main(String[] args) throws IOException { doCompress("D:/java/", "D:/java.zip"); } }

      

     

  • 相关阅读:
    死锁
    不能复制文件到服务器
    JWT
    身份验证
    依赖注入
    ml.net
    swift 枚举、结构、类
    nginx 负载均衡
    sql 时间函数大全
    更新SVN时提示要清理,但清理失败,乱码得解决方案
  • 原文地址:https://www.cnblogs.com/xdcr/p/9365737.html
Copyright © 2011-2022 走看看