精华内容
下载资源
问答
  • 怎么打包文件成压缩包
    千次阅读
    2021-06-17 16:35:01

    java 将多个文件打包成压缩包下载

    public void plistDownLoad(HttpServletResponse response) throws Exception {
            List<String> paths = new ArrayList<>();
            paths.add("C:\\Users\\ysrjs\\Desktop\\战网.txt");
            paths.add("C:\\Users\\ysrjs\\Desktop\\宏.txt");
            if (paths.size() != 0) {
                String zipFilePath = "D:\\测试打包下载";
                //压缩包文件夹
                File zipFile = new File(zipFilePath);
                if(!zipFile.exists() && !zipFile.isDirectory()){
                    zipFile.mkdirs();
                }
                //创建压缩文件
                File zipFile2 = new File(zipFilePath+"\\"+"下载文件.zip");
                if(!zipFile2.exists()){
                    zipFile2.createNewFile();
                }
                // 创建压缩输出流
                ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipFile2));
                // 循环调用压缩文件方法 将每个文件压缩到 压缩文件中
                for (String path : paths) {
                    // 该方法在下面定义All
                    fileAllToZip(path, zipOut);
                }
                // 压缩完成后,关闭压缩流
                zipOut.close();
    
    //            //拼接下载默认名称并转为ISO-8859-1格式
    //            String fileName = new String(("我的压缩文件.zip").getBytes(),"ISO-8859-1");
    //            response.setHeader("Content-Disposition", "attchment;filename="+fileName);
    //
    //            //该流不可以手动关闭,手动关闭下载会出问题,下载完成后会自动关闭
    //            ServletOutputStream outputStream = response.getOutputStream();
    //            FileInputStream inputStream = new FileInputStream(zipFile2);
    //            // 如果是SpringBoot框架,在这个路径
    //            // org.apache.tomcat.util.http.fileupload.IOUtils产品
    //            // 否则需要自主引入apache的 commons-io依赖
    //            // copy方法为文件复制,在这里直接实现了下载效果
    //            IOUtils.copy(inputStream, outputStream);
    //
    //            // 关闭输入流
    //            inputStream.close();
    
                //下载完成之后,删掉这个zip包
    //            File fileTempZip = new File(zipFilePath);
    //            zipFile2.delete();
            }
        }
        public static void fileAllToZip(String filePath,ZipOutputStream zipOut) throws IOException {
            // 需要压缩的文件
            File file = new File(filePath);
            // 获取文件名称,如果有特殊命名需求,可以将参数列表拓展,传fileName
            String fileName = file.getName();
            FileInputStream fileInput = new FileInputStream(filePath);
            // 缓冲
            byte[] bufferArea = new byte[1024 * 10];
            BufferedInputStream bufferStream = new BufferedInputStream(fileInput, 1024 * 10);
            // 将当前文件作为一个zip实体写入压缩流,fileName代表压缩文件中的文件名称
            zipOut.putNextEntry(new ZipEntry(fileName));
            int length = 0;
            // 最常规IO操作,不必紧张
            while ((length = bufferStream.read(bufferArea, 0, 1024 * 10)) != -1) {
                zipOut.write(bufferArea, 0, length);
            }
            //关闭流
            fileInput.close();
            // 需要注意的是缓冲流必须要关闭流,否则输出无效
            bufferStream.close();
            // 压缩流不必关闭,使用完后再关
        }
    
    更多相关内容
  • 主要为大家详细介绍了java实现多个文件压缩成压缩包,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要介绍了Vue -- webpack 项目自动打包压缩zip文件的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 主要为大家详细介绍了java实现批量下载、将多文件打包成zip格式下载,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要介绍了JAVA 根据Url把多文件打包成ZIP下载的相关资料,需要的朋友可以参考下
  • Java实现文件批量下载,打包成zip压缩包

    千次阅读 热门讨论 2021-10-15 17:48:11
       最近在做一个管理系统的项目,需要实现一个功能,就是批量下载文件,并打包成zip压缩包。    前端通过POST请求传来要下载的文件列表,Java代码实现如下: import java.io.BufferedInputStream; import java....

       最近在做一个管理系统的项目,需要实现一个功能,就是批量下载文件,并打包成zip压缩包。
       前端通过POST请求传来要下载的文件列表,Java代码实现如下:

    import java.io.BufferedInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.OutputStream;
    import java.net.URLEncoder;
    import java.util.List;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import com.fasterxml.jackson.core.type.TypeReference;
    import com.fasterxml.jackson.databind.JsonNode;
    import com.fasterxml.jackson.databind.ObjectMapper;
    
    /**
    * @author XXX
    * @version 1.0
    * @date 2021年10月15日
    */
    public class Test {
    
        /**
         * 日志输出对象
         */
        private static Logger logger = LoggerFactory.getLogger(Test.class);
    
        /**
        * 文件路径  举例:D:\data\test\file\
        */
        @Value("${path}")
        private String path;
    
        /**
         * 文件下载
         *
         * @param param
         * @return
         */
        @RequestMapping(value = "/test/downloadfile.action", method = RequestMethod.POST)
        @ResponseBody
        public void downloadFile(@RequestBody String param,HttpServletRequest request, HttpServletResponse response) {
    
            OutputStream os = null;
            ZipOutputStream zos = null;
            BufferedInputStream bis = null;
            FileInputStream in = null;   
    
            try {
                ObjectMapper objectMapper = new ObjectMapper();
                JsonNode root = objectMapper.readTree(param);
    
                if (root != null) {
                    JsonNode dataNode = root.findValue("fileNameList");
                    List<String> fileNameList = objectMapper.readValue(dataNode.toString(), new TypeReference<List<String>>(){});
    
                    // 通过response对象获取OutputStream流
                    os = response.getOutputStream();
                    // 获取zip的输出流
                    zos = new ZipOutputStream(os);
    
                    // 遍历文件名列表添加进压缩包
                    for (int i = 0; i < fileNameList.size(); i++) {
                        String fileName = fileNameList.get(i);
                        String filePath = path + fileName;
    
                        File file = new File(filePath);
                        if (file.exists()) {
                            // 读取文件流
                            in = new FileInputStream(file);
    
                            // 创建ZIP实体,并添加进压缩包
                            ZipEntry zipEntry = new ZipEntry(fileName);
                            zos.putNextEntry(zipEntry);
    
                            // 设置压缩后的文件名
                            String zipFileName = "dataFile.zip";
                            // 设置Content-Disposition响应头,控制浏览器弹出保存框,若没有此句浏览器会直接打开并显示文件
                            // 中文名要进行URLEncoder.encode编码,否则客户端能下载但名字会乱码
                            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(zipFileName, "UTF-8"));
    
                            // 输入缓冲流
                            bis = new BufferedInputStream(in, 1024 * 10);
                            // 创建读写缓冲区
                            byte[] buf = new byte[1024 * 10];
                            int len = 0;
                            while ((len = bis.read(buf, 0, 1024 * 10)) > 0) {
                                // 使用OutputStream将缓冲区的数据输出到客户端浏览器
                                zos.write(buf, 0, len);
                            }
                            bis.close();
                            in.close();
                            zos.closeEntry();
                        }
                    }
                }
            } catch (Exception e) {
                logger.error("下载文件异常:" + e.toString());
            } finally {
                try {
                    if(null != bis){
                        bis.close();
                    } 
                    if(null != in){
                        in.close();
                    }
                    if(null != zos){
                        zos.close();
                    }
                        if(null != os){
                    os.close();
                    }
                } catch (Exception e2) {
                    logger.error(e2.toString());
                }
            }
        }
    }
    
    

       有些同学会遇到下载下来文件解压报错的情况,一定要检查流是否关闭,流关闭一定要用close(),closeEntry()关闭是针对往压缩文件写入实体,同时要排查流的关闭顺序是否正确,先打开的流,最后关闭。

    展开全文
  • Java如何将文件打包成Zip、Rar压缩包

    千次阅读 2020-09-15 13:56:54
    将E盘zip文件夹下面的内容打成压缩包保存到E盘目录下 代码实现:ZipUtil.java import java.io.FileOutputStream; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.ArrayUtils; import ...

    1.将单个文件打成压缩包

    需求:
    将E盘下的 test.xls 文件打成压缩包保存到E盘目录下的 target.zip 文件中

    代码实现:ZipUtil.java

    import org.apache.commons.io.IOUtils;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    
    /**
     * <p> @Title ZipUtil
     * <p> @Description 将单个文件打成压缩包
     *
     * @author ACGkaka
     * @date 2020/9/15 14:11
     */
    public class ZipUtil {
    
        public static void main(String[] args) throws Exception {
        String dir = "E:\\test.xls";
        String zip = "E:\\target.zip";
        zip(dir, zip);
    }
    
        /**
         * 打包
         *
         * @param dir            要打包的目录
         * @param zipFile        打包后的文件路径
         * @throws Exception
         */
        public static void zip(String dir, String zipFile) throws Exception {
            try (ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFile))) {
                File sourceFile = new File(dir);
                out.putNextEntry(new ZipEntry(sourceFile.getName()));
                try (FileInputStream in = new FileInputStream(sourceFile)) {
                    IOUtils.copy(in, out);
                } catch (Exception e) {
                    throw new RuntimeException("打包异常: " + e.getMessage());
                }
            }
        }
    }
    
    

    2.将E:\zip目录打成压缩包

    需求:
    将E盘zip文件夹下面的内容打成压缩包保存到E盘目录下的 target.zip 文件中

    代码实现:ZipUtil.java

    import java.io.FileOutputStream;
    
    import org.apache.commons.io.IOUtils;
    import org.apache.commons.lang3.ArrayUtils;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    
    /**
     * <p> @Title ZipUtil
     * <p> @Description 文件夹打压缩包
     *
     * @author ACGkaka
     * @date 2020/9/15 13:48
     */
    
    public class ZipUtil {
    
        public static void main(String[] args) throws Exception {
            String dir = "E:\\zip";
            String zip = "E:\\target.zip";
            String rar = "E:\\target.rar";
            zip(dir, zip);
            zip(dir, rar, true);
        }
    
    
        /**
         * 打包
         *
         * @param dir     要打包的目录
         * @param zipFile 打包后的文件路径
         * @throws Exception
         */
        public static void zip(String dir, String zipFile) throws Exception {
            zip(dir, zipFile, false);
        }
    
        /**
         * 打包
         *
         * @param dir            要打包的目录
         * @param zipFile        打包后的文件路径
         * @param includeBaseDir 是否包括最外层目录
         * @throws Exception
         */
        public static void zip(String dir, String zipFile, boolean includeBaseDir) throws Exception {
            if (zipFile.startsWith(dir)) {
                throw new RuntimeException("打包生成的文件不能在打包目录中");
            }
            try (ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFile))) {
                File fileDir = new File(dir);
                String baseDir = "";
                if (includeBaseDir) {
                    baseDir = fileDir.getName();
                }
                compress(out, fileDir, baseDir);
            }
        }
    
        public static void compress(ZipOutputStream out, File sourceFile, String base) throws Exception {
    
            if (sourceFile.isDirectory()) {
                base = base.length() == 0 ? "" : base + File.separator;
                File[] files = sourceFile.listFiles();
                if (ArrayUtils.isEmpty(files)) {
                    // todo 打包空目录
                    // out.putNextEntry(new ZipEntry(base));
                    return;
                }
                for (File file : files) {
                    compress(out, file, base + file.getName());
                }
            } else {
                out.putNextEntry(new ZipEntry(base));
                try (FileInputStream in = new FileInputStream(sourceFile)) {
                    IOUtils.copy(in, out);
                } catch (Exception e) {
                    throw new RuntimeException("打包异常: " + e.getMessage());
                }
            }
        }
    }
    
    






    参考博客:https://blog.csdn.net/frankcheng5143/article/details/105129108

    展开全文
  • 做的作业有个调用百度api识别语音文件,有需要pcm文件测试的可以自行下载,希望可以节省你的一些时间。 (北京北京8k16bits单声道.pcm 冰雨片段8k16bit单声道.pcm 冰雨片段32k16bit单声道.pcm 冰雨片段48k16bit单...
  • packFileToZip可以将指定目录(tempFileDir)下的所有文件打包成指定zipName的压缩包,保存在tempZipDir中,然后再通过response获取流响应给前端,其中有使用到IOutil工具类,用于将文件通过流写入磁盘,请自行修改...
  • JAVA将多个文件打包成ZIP压缩包输出

    千次阅读 2019-07-01 11:36:21
    工具类一(将多个远端文件读取并压缩) import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import ...

    工具类一(将多个远端文件读取并压缩)

    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Set;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletResponse;
    
    public class ZipUtil {
    	/**
    	 * 压缩文件
    	 * @param files 键值对-》(文件名:文件链接)
    	 * @param outputStream
    	 * @throws Exception 
    	 * @throws IOException
    	 */
    	public static void zipPersonPhotoFile(Map<String,String> files, ZipOutputStream outputStream) {
    	    try {
    	    	Set<Entry<String, String>> entrySet = files.entrySet();
    	        for (Entry<String, String> file:entrySet) {
    	            try {
    	                zipFile(getImgIs(file.getValue()),file.getKey(), outputStream);
    	            } catch (Exception e) {
    	                continue;
    	            }
    	        }
    	    } catch (Exception e) {
    	        e.printStackTrace();
    	    } finally {
    	    	try {
    				outputStream.close();
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			} 
    	    }
    	}
    
    	/**
    	 * 将文件写入到zip文件中
    	 * @param inputFile
    	 * @param outputstream
    	 * @throws Exception
    	 */
    	public static void zipFile(InputStream is, String fileName, ZipOutputStream outputstream) throws IOException, ServletException {
    	    try {
    	        if (is != null) {
                    BufferedInputStream bInStream = new BufferedInputStream(is);
                    ZipEntry entry = new ZipEntry(fileName);
                    outputstream.putNextEntry(entry);
                    int len = 0 ;
                    byte[] buffer = new byte[10 * 1024];
                    while ((len = is.read(buffer)) > 0) {
                    	outputstream.write(buffer, 0, len);
                    	outputstream.flush();
                    }
                    outputstream.closeEntry();//Closes the current ZIP entry and positions the stream for writing the next entry
                    bInStream.close();//关闭
                    is.close();
    	        } else {
    	            throw new ServletException("文件不存在!");
    	        } 
    	    } catch (IOException e) {
    	        throw e;
    	    }
    	}
    	
        /**
        * 获取文件流
        */
    	public static InputStream getImgIs(String imgURL) throws IOException{
    		//new一个URL对象
    		URL url = new URL(imgURL);
    		//打开链接  
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();  
            //设置请求方式为"GET"  
            conn.setRequestMethod("GET");
            //超时响应时间为5秒  
            conn.setConnectTimeout(5 * 1000);  
            //通过输入流获取图片数据  
            return conn.getInputStream();
    	}
    
    	/**
    	 * 下载打包的文件
    	 *
    	 * @param file
    	 * @param response
    	 */
    	public static void downloadZip(File file, HttpServletResponse response) {
    	    try {
    	        // 以流的形式下载文件。
    	        BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file.getPath()));
    	        byte[] buffer = new byte[fis.available()];
    	        fis.read(buffer);
    	        fis.close();
    	        // 清空response
    	        response.reset();
    	        OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
    	        response.setCharacterEncoding("UTF-8");
    	        response.setContentType("application/octet-stream");
    	        response.setHeader("Content-Disposition", "attachment;filename=" + file.getName());
    	        toClient.write(buffer);
    	        toClient.flush();
    	        toClient.close();
    	        file.delete();
    	    } catch (IOException ex) {
    	        ex.printStackTrace();
    	    }
    	}
    
    }

    实例 

    public void zipFile (Map<String,String> map) {
    		try {
    			ZipUtil.zipPersonPhotoFile(map, new ZipOutputStream(new FileOutputStream(new File(zipFilePath))));
    		} catch (FileNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    }

    工具类二(将本地某个文件/文件夹压缩)

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Set;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    
    import javax.servlet.ServletException;
    
    import org.apache.commons.io.FileUtils;
    
    public class ZipUtils {
    
      private ZipUtils() {
        throw new IllegalStateException("Utility class");
      }
    
      /**
       * 将文件/目录进行压缩
       * @param sourceFile 原文件/目录
       * @param targetZipFile 压缩后目标文件
       * @throws IOException 
       */
      public static void zipFiles(File sourceFile, File targetZipFile) throws IOException {
        ZipOutputStream outputStream = null;
        try {
          outputStream = new ZipOutputStream(new FileOutputStream(targetZipFile));
          addEntry("", sourceFile, outputStream);
        } catch (Exception e) {
          throw new IOException(e);
        } finally {
          outputStream.close();
        }
      }
    
      /**
       * 将文件写入到zip文件中
       * @param source
       * @param outputstream
       * @throws IOException
       * @throws ServletException
       */
      private static void addEntry(String base, File source, ZipOutputStream outputstream)
          throws IOException, ServletException {
        FileInputStream is = null;
        try {
          String entry = base + source.getName();
          if (source.isDirectory()) {
            for (File file : source.listFiles()) {
              // 递归导入文件
              addEntry(entry + File.separator, file, outputstream);
            }
          } else {
    
            is = FileUtils.openInputStream(source);
            if (is != null) {
              outputstream.putNextEntry(new ZipEntry(entry));
    
              int len = 0;
              byte[] buffer = new byte[10 * 1024];
              while ((len = is.read(buffer)) > 0) {
                outputstream.write(buffer, 0, len);
                outputstream.flush();
              }
              outputstream.closeEntry();
            }
          }
    
        } catch (IOException e) {
          throw e;
        } finally {
          if (is != null) {
            is.close();
          }
        }
    
      }
    
    }
    

     

    展开全文
  • vue 批量下载图片并打包成压缩包

    千次阅读 2022-03-24 11:44:30
    第一步 npm install JSZip npm install FileSaver 第二步 在使用的页面引入 import JSZip from "jszip"; import FileSaver from "file-saver"; ... //通过请求获取文件blob格式 let xmlh
  • Java打包ZIP压缩包文件下载

    千次阅读 2022-01-04 13:34:23
    最近项目有需求,需要把管理中的数据,按照ID下载其附件,但由于附件较多,因此需要用压缩包的形式下载。 我们的文件都采用相对路径存储在远程FTP服务器。因此需要连接远程FTP服务器(正式环境存储在OSS服务器) ...
  • // 逐个添加文件,需要后缀名,pdf或xlsx都可 }); promises.push(promise);// 逐个添加请求 }); Promise.all(promises).then(async () => { await zip.generateAsync({ type: 'blob' }).then(content => { // 生成...
  • jquery把图片文件打包成ZIP文件提供下载,不用再后台生成储存
  • Python 将多层文件夹里面的文件打包为zip压缩包 将file文件夹里面的key文件夹里面的所有内容打包为zip压缩包。 文件夹结构如下: j@ubuntu:~/Desktop/file$ pwd /home/j/Desktop/file j@ubuntu:~/Desktop/file$ tree...
  • java打包文件生成zip压缩包

    万次阅读 2017-09-23 09:54:50
    /** ... * 打包成zip包 */ public static void generateZip(OutputStream os, List<File> files) throws Exception { ZipOutputStream out = null; try { byte[] buffer = new byt
  • import java.io.*; import java.util.*;... * 生成压缩文件 (zip,rar 格式) */ public class UtilCompress { private static final int BUFFER_SIZE = 2 * 1024; /** * 压缩ZIP 方法1 *.
  • 概要:我们有时候需要将很多不同类型的文档单独打包成一个 ZIP 压缩包或者单独的打包成一个 7z 压缩包,我们一个一个处理的话比较慢,但是有没有一种批量将文件 ZIP 和 7z 压缩包的方法呢? 我们有很多文件需要...
  • 需求:前台传过来一个url数组,其中是每个文件的路径,后台需要获取到每个文件然后将其打成压缩包返回流给前台下载 核心是:ZipOutputStream,废话不多说,上代码 savePath 是我在yml配置文件里配置好的文件存储...
  • NULL 博文链接:https://alog2012.iteye.com/blog/1616684
  • <button id="download">下载</button> <div>正在下载 <span id="download-name"></span></div> <script src=...
  • java实现多个文件压缩rar压缩包

    热门讨论 2011-12-13 19:28:19
    ava实现多个文件压缩rar压缩包,已经过调试,立马就能用!!
  • // 解决不同浏览器压缩包名字含有中文时乱码的问题 String downloadName = System . currentTimeMillis ( ) + ".zip" ; String agent = request . getHeader ( "USER-AGENT" ) ; try { if ( ...
  • java实现将多文件压缩一个压缩包。适用于网络多文件下载等场景
  • 首先定义获取本地文件列表的方法function list_dir($dir){$result = array();if (is_dir($dir)){$file_dir = scandir($dir);foreach($file_dir as $file){if ($file == '.' || $file == '..'){continue;}elseif (is_...
  • easyExcel导出excel文件打包成zip压缩包下载

    千次阅读 热门讨论 2020-04-22 14:59:15
    // 读入需要下载的文件的内容,打包到zip文件 while ((len = fis.read(buffer)) > 0) { out.write(buffer, 0, len); } out.closeEntry(); fis.close(); } out.close(); //下载zip文件 this.downFile(response, ...
  • 将手机微信的图片打包成压缩包

    万次阅读 2020-04-26 17:29:14
    创建文件夹 输入文件名 查看图片 多选图片
  • VC6 插件 ProjectZip,在工具栏上生成图标,快速打包项目文件.
  • 基于jsZip库 压缩文件 解压文件 对文件重命名 删除文件 打包文件 下载到本地 希望可以给你们参考价值
  • /**保存文件,并且声称压缩包,返回压缩包地址** @date Nov 20, 20142:06:25 PM*@paramresultList*@return压缩包地址*@throwsIOException*/private String saveFile(HttpServletRequest request, Long shopid, List ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 65,701
精华内容 26,280
热门标签
关键字:

怎么打包文件成压缩包