精华内容
下载资源
问答
  • 压缩成zip
    千次阅读
    2022-02-23 21:59:14
    ackage org.fh.util;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    
    /**
     * 说明:java压缩成zip
     * 作者:FH Admin
     * from:fhadmin.cn
     */
    public class FileZip {
    
    	/**
    	 * @param inputFileName 你要压缩的文件夹(整个完整路径)
    	 * @param zipFileName 压缩后的文件(整个完整路径)
    	 * @throws Exception
    	 */
    	public static Boolean zip(String inputFileName, String zipFileName) throws Exception {
    		zip(zipFileName, new File(inputFileName));
    		return true;
    	}
    
    	private static void zip(String zipFileName, File inputFile) throws Exception {
    		ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName));
    		zip(out, inputFile, "");
    		out.flush();
    		out.close();
    	}
    
    	private static void zip(ZipOutputStream out, File f, String base) throws Exception {
    		if (f.isDirectory()) {
    			File[] fl = f.listFiles();
    			out.putNextEntry(new ZipEntry(base + "/"));
    			base = base.length() == 0 ? "" : base + "/";
    			for (int i = 0; i < fl.length; i++) {
    				zip(out, fl[i], base + fl[i].getName());
    			}
    		} else {
    			out.putNextEntry(new ZipEntry(base));
    			FileInputStream in = new FileInputStream(f);
    			int b;
    			while ((b = in.read()) != -1) {
    				out.write(b);
    			}
    			in.close();
    		}
    	}
    	
    	 public static void main(String [] temp){       
    		 try {           
    			 zip("E:\\ftl","E:\\test.zip");//你要压缩的文件夹      和  压缩后的文件 
    			 }catch (Exception ex) {       
    				 ex.printStackTrace();    
    			 }   
    		}
    }
    

    更多相关内容
  • Java实现将文件或者文件夹压缩成zip

    千次阅读 2022-01-05 12:57:46
    可以压缩文件,也可以压缩文件夹 2. 同时支持压缩多级文件夹,工具内部做了递归处理 3. 碰到空的文件夹,也可以压缩 4. 可以选择是否保留原来的目录结构,如果不保留,所有文件跑压缩包根目录去了,且空文件夹直接...

    这个工具类的功能为:
    1 . 可以压缩文件,也可以压缩文件夹
    2. 同时支持压缩多级文件夹,工具内部做了递归处理
    3. 碰到空的文件夹,也可以压缩
    4. 可以选择是否保留原来的目录结构,如果不保留,所有文件跑压缩包根目录去了,且空文件夹直接舍弃。注意:如果不保留文件原来目录结构,在碰到文件名相同的文件时,会压缩失败。
    5. 代码中提供了2个压缩文件的方法,一个的输入参数为文件夹路径,一个为文件列表,可根据实际需求选择方法。

    package com.tax.core.util; 
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    
    
    public class ZipUtils {
    	
    	private static final int  BUFFER_SIZE = 2 * 1024;
    	
    	/**
    	 * 压缩成ZIP 方法1
    	 * @param srcDir 压缩文件夹路径 
    	 * @param out    压缩文件输出流
    	 * @param KeepDirStructure  是否保留原来的目录结构,true:保留目录结构; 
    	 * 							false:所有文件跑到压缩包根目录下(注意:不保留目录结构可能会出现同名文件,会压缩失败)
    	 * @throws RuntimeException 压缩失败会抛出运行时异常
    	 */
    	public static void toZip(String srcDir, OutputStream out, boolean KeepDirStructure)
    			throws RuntimeException{
    		
    		long start = System.currentTimeMillis();
    		ZipOutputStream zos = null ;
    		try {
    			zos = new ZipOutputStream(out);
    			File sourceFile = new File(srcDir);
    			compress(sourceFile,zos,sourceFile.getName(),KeepDirStructure);
    			long end = System.currentTimeMillis();
    			System.out.println("压缩完成,耗时:" + (end - start) +" ms");
    		} catch (Exception e) {
    			throw new RuntimeException("zip error from ZipUtils",e);
    		}finally{
    			if(zos != null){
    				try {
    					zos.close();
    				} catch (IOException e) {
    					e.printStackTrace();
    				}
    			}
    		}
    		
    	}
    	
    	/**
    	 * 压缩成ZIP 方法2
    	 * @param srcFiles 需要压缩的文件列表
    	 * @param out 	        压缩文件输出流
    	 * @throws RuntimeException 压缩失败会抛出运行时异常
    	 */
    	public static void toZip(List<File> srcFiles , OutputStream out)throws RuntimeException {
    		long start = System.currentTimeMillis();
    		ZipOutputStream zos = null ;
    		try {
    			zos = new ZipOutputStream(out);
    			for (File srcFile : srcFiles) {
    				byte[] buf = new byte[BUFFER_SIZE];
    				zos.putNextEntry(new ZipEntry(srcFile.getName()));
    				int len;
    				FileInputStream in = new FileInputStream(srcFile);
    				while ((len = in.read(buf)) != -1){
    					zos.write(buf, 0, len);
    				}
    				zos.closeEntry();
    				in.close();
    			}
    			long end = System.currentTimeMillis();
    			System.out.println("压缩完成,耗时:" + (end - start) +" ms");
    		} catch (Exception e) {
    			throw new RuntimeException("zip error from ZipUtils",e);
    		}finally{
    			if(zos != null){
    				try {
    					zos.close();
    				} catch (IOException e) {
    					e.printStackTrace();
    				}
    			}
    		}
    	}
    	
    	
    	/**
    	 * 递归压缩方法
    	 * @param sourceFile 源文件
    	 * @param zos		 zip输出流
    	 * @param name		 压缩后的名称
    	 * @param KeepDirStructure  是否保留原来的目录结构,true:保留目录结构; 
    	 * 							false:所有文件跑到压缩包根目录下(注意:不保留目录结构可能会出现同名文件,会压缩失败)
    	 * @throws Exception
    	 */
    	private static void compress(File sourceFile, ZipOutputStream zos, String name,
    			boolean KeepDirStructure) throws Exception{
    		byte[] buf = new byte[BUFFER_SIZE];
    		if(sourceFile.isFile()){
    			// 向zip输出流中添加一个zip实体,构造器中name为zip实体的文件的名字
    			zos.putNextEntry(new ZipEntry(name));
    			// copy文件到zip输出流中
    			int len;
    			FileInputStream in = new FileInputStream(sourceFile);
    			while ((len = in.read(buf)) != -1){
    				zos.write(buf, 0, len);
    			}
    			// Complete the entry
    			zos.closeEntry();
    			in.close();
    		} else {
    			File[] listFiles = sourceFile.listFiles();
    			if(listFiles == null || listFiles.length == 0){
    				// 需要保留原来的文件结构时,需要对空文件夹进行处理
    				if(KeepDirStructure){
    					// 空文件夹的处理
    					zos.putNextEntry(new ZipEntry(name + "/"));
    					// 没有文件,不需要文件的copy
    					zos.closeEntry();
    				}
    				
    			}else {
    				for (File file : listFiles) {
    					// 判断是否需要保留原来的文件结构
    					if (KeepDirStructure) {
    						// 注意:file.getName()前面需要带上父文件夹的名字加一斜杠,
    						// 不然最后压缩包中就不能保留原来的文件结构,即:所有文件都跑到压缩包根目录下了
    						compress(file, zos, name + "/" + file.getName(),KeepDirStructure);
    					} else {
    						compress(file, zos, file.getName(),KeepDirStructure);
    					}
    					
    				}
    			}
    		}
    	}
    	
    	public static void main(String[] args) throws Exception {
    		/** 测试压缩方法1  */
    		FileOutputStream fos1 = new FileOutputStream(new File("c:/mytest01.zip"));
    		ZipUtils.toZip("D:/log", fos1,true);
    		
    		/** 测试压缩方法2  */
    		List<File> fileList = new ArrayList<>();
    		fileList.add(new File("D:/Java/jdk1.7.0_45_64bit/bin/jar.exe"));
    		fileList.add(new File("D:/Java/jdk1.7.0_45_64bit/bin/java.exe"));
    		FileOutputStream fos2 = new FileOutputStream(new File("c:/mytest02.zip"));
    		ZipUtils.toZip(fileList, fos2);
    	}
    }
    
    展开全文
  • java多文件压缩成zip文件并实现下载

    热门讨论 2012-10-25 19:40:27
    本例是把多个文件压缩成一个zip文件,然后下载到本地。 项目完整,下载解压即可运行。
  • java将文件夹压缩成zip java按照目录结构压缩文件夹

    前言

    • 用java将文件夹压缩成zip包,像压缩软件一样,按照目录结构压缩(包含当前文件夹)
    • 网上没有找到太合适的,借鉴其它帖子,自己写了一个

    代码

    package xin.yangshuai.mybatisgeneratorweb.util;
    
    import java.io.*;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    
    /**
     * ZipUtils
     *
     * @author shuai
     * @date 2021/7/30
     */
    public class ZipUtils {
    
        public static void main(String[] args) throws Exception {
            File sourceFile = new File("D:/test/testFile");
            fileToZip(sourceFile);
        }
    
    
        /**
         * sourceFile一定要是文件夹
         * 默认会在同目录下生成zip文件
         *
         * @param sourceFilePath
         * @throws Exception
         */
        public static void fileToZip(String sourceFilePath) throws Exception {
            fileToZip(new File(sourceFilePath));
        }
    
        /**
         * sourceFile一定要是文件夹
         * 默认会在同目录下生成zip文件
         *
         * @param sourceFile
         * @throws Exception
         */
        public static void fileToZip(File sourceFile) throws Exception {
    
            if (!sourceFile.exists()) {
                throw new RuntimeException("不存在");
            }
            if (!sourceFile.isDirectory()) {
                throw new RuntimeException("不是文件夹");
            }
            //zip文件生成位置
            File zipFile = new File(sourceFile.getAbsolutePath() + ".zip");
            FileOutputStream fos = new FileOutputStream(zipFile);
            ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(fos));
            fileToZip(zos, sourceFile, "");
            zos.close();
            fos.close();
        }
    
    
        private static void fileToZip(ZipOutputStream zos, File sourceFile, String path) throws Exception {
    
            System.out.println(sourceFile.getAbsolutePath());
    
            //如果是文件夹只创建zip实体即可,如果是文件,创建zip实体后还要读取文件内容并写入
            if (sourceFile.isDirectory()) {
                path = path + sourceFile.getName() + "/";
                ZipEntry zipEntry = new ZipEntry(path);
                zos.putNextEntry(zipEntry);
                for (File file : sourceFile.listFiles()) {
                    fileToZip(zos, file, path);
                }
            } else {
                //创建ZIP实体,并添加进压缩包
                ZipEntry zipEntry = new ZipEntry(path + sourceFile.getName());
                zos.putNextEntry(zipEntry);
                byte[] bufs = new byte[1024 * 10];
                //读取待压缩的文件并写进压缩包里
                FileInputStream fis = new FileInputStream(sourceFile);
                BufferedInputStream bis = new BufferedInputStream(fis, 1024 * 10);
                int read = 0;
                while ((read = bis.read(bufs, 0, 1024 * 10)) != -1) {
                    zos.write(bufs, 0, read);
                }
                bis.close();
                fis.close();
            }
        }
    }
    

    展开全文
  • 将linux中文件夹压缩成zip文件及下载

    千次阅读 2020-07-24 14:04:55
    前面写到html文件转pdf或者image( 没看的小伙伴可以点此查看.),存放到指定的位置,为了方便下载,... * 如果传null或者""则将压缩文件存放在当前目录,即跟源文件同目录,压缩文件名取源文件名,以.zip为后缀;<

    前面写到html文件转成pdf或者image( 没看的小伙伴可以点此查看.),存放到指定的位置,为了方便下载,常常需要将此先压缩。
    那么压缩是怎么实现的呢?话不多少,直接上代码。

    /**
    	 * 使用给定密码压缩指定文件或文件夹到指定位置.
    	 * <p>
    	 * dest可传最终压缩文件存放的绝对路径,也可以传存放目录,也可以传null或者"".<br />
    	 * 如果传null或者""则将压缩文件存放在当前目录,即跟源文件同目录,压缩文件名取源文件名,以.zip为后缀;<br />
    	 * 如果以路径分隔符("/")结尾,则视为目录,压缩文件名取源文件名,以.zip为后缀,否则视为文件名.
    	 * 
    	 * @param src
    	 *            要压缩的文件或文件夹路径
    	 * @param dest
    	 *            压缩文件存放路径
    	 * @param isCreateDir
    	 *            是否在压缩文件里创建目录,仅在压缩文件为目录时有效.<br />
    	 *            如果为false,将直接压缩目录下文件到压缩文件.
    	 * @param passwd
    	 *            压缩使用的密码
    	 * @return 最终的压缩文件存放的绝对路径,如果为null则说明压缩失败.
    	 */
    	public static String zip(String src, String dest, boolean isCreateDir, String passwd) {
    		File srcFile = new File(src);
    		dest = buildDestinationZipFilePath(srcFile, dest);
    		ZipParameters parameters = new ZipParameters();
    		parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); // 压缩方式
    		parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); // 压缩级别
    		if (!StringUtils.isEmpty(passwd)) {
    			parameters.setEncryptFiles(true);
    			parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD); // 加密方式
    			parameters.setPassword(passwd.toCharArray());
    		}
    		try {
    			ZipFile zipFile = new ZipFile(dest);
    			zipFile.setFileNameCharset("GBK");
    			if (srcFile.isDirectory()) {
    				// 如果不创建目录的话,将直接把给定目录下的文件压缩到压缩文件,即没有目录结构
    				if (!isCreateDir) {
    					File[] subFiles = srcFile.listFiles();
    					ArrayList<File> temp = new ArrayList<File>();
    					Collections.addAll(temp, subFiles);
    					zipFile.addFiles(temp, parameters);
    					return dest;
    				}
    				zipFile.addFolder(srcFile, parameters);
    			} else {
    				zipFile.addFile(srcFile, parameters);
    			}
    			return dest;
    		} catch (ZipException e) {
    			e.printStackTrace();
    		}
    		return null;
    	}
    /**
    	 * 构建压缩文件存放路径,如果不存在将会创建 传入的可能是文件名或者目录,也可能不传,此方法用以转换最终压缩文件的存放路径
    	 * 
    	 * @param srcFile
    	 *            源文件
    	 * @param destParam
    	 *            压缩目标路径
    	 * @return 正确的压缩文件存放路径
    	 */
    	private static String buildDestinationZipFilePath(File srcFile, String destParam) {
    		if (StringUtils.isEmpty(destParam)) {
    			if (srcFile.isDirectory()) {
    				destParam = srcFile.getParent() + "/" + srcFile.getName() + ".zip";
    			} else {
    				String fileName = srcFile.getName().substring(0, srcFile.getName().lastIndexOf("."));
    				destParam = srcFile.getParent() + "/" + fileName + ".zip";
    			}
    		} else {
    			createDestDirectoryIfNecessary(destParam); // 在指定路径不存在的情况下将其创建出来
    			if (destParam.endsWith("/")) {
    				String fileName = "";
    				if (srcFile.isDirectory()) {
    					fileName = srcFile.getName();
    				} else {
    					fileName = srcFile.getName().substring(0, srcFile.getName().lastIndexOf("."));
    				}
    				destParam += fileName + ".zip";
    			}
    		}
    		return destParam;
    	}
    
    /**
    	 * 在必要的情况下创建压缩文件存放目录,比如指定的存放路径并没有被创建
    	 * 
    	 * @param destParam
    	 *            指定的存放路径,有可能该路径并没有被创建
    	 */
    	private static void createDestDirectoryIfNecessary(String destParam) {
    		File destDir = null;
    		if (destParam.endsWith("/")) {
    			destDir = new File(destParam);
    		} else {
    			destDir = new File(destParam.substring(0, destParam.lastIndexOf("/")));
    		}
    		if (!destDir.exists()) {
    			destDir.mkdirs();
    		}
    	}
    
    

    这样我们就可以在指定位置生成zip文件了,
    至于下载就更加简单了,设置路径和文件名就可以了

    public static void downloadPdfPackage(HttpServletResponse response, String filePath, String fileName) {
    		BufferedInputStream bis = null;
    		BufferedOutputStream bos = null;
    		try {
    			// 设置response参数,可以打开下载页面
    			response.reset();
    			response.setContentType("application/octet-stream");
    			response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
    			ServletOutputStream out = response.getOutputStream();
    			bis = new BufferedInputStream(new FileInputStream(filePath));
    			bos = new BufferedOutputStream(out);
    			byte[] buff = new byte[2048];
    			int bytesRead;
    			// Simple read/write loop.
    			while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
    				bos.write(buff, 0, bytesRead);
    			}
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				if (bis != null)
    					bis.close();
    				if (bos != null)
    					bos.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    
    展开全文
  • java控制指定路径下的文件夹压缩成zip格式。 java将zip压缩包解压成为文件夹。直接使用io流进行操作,不需借助其他jar包
  • java中将多文件字节流压缩成zip

    千次阅读 2020-12-31 12:48:45
    java中将多文件字节流压缩成zip 核心就是使用java.util.zip包中的ZipOutputStream 直接上核心代码 /** * * @param zipFilePath zip保存路径 * @param zipFileName zip文件名 * @param byteList 文件字节码...
  • Java对文件夹压缩成zip导出

    千次阅读 2020-12-23 20:24:43
    现在有一个需求,是将一级目录以及下属的二级目录数据放入文本中,然后放入文件夹中,最后将文件夹压缩导出。目录结构如下: 最后导出文件结构如下图所示: 2:service层代码处理 处理过程 1、将目录结构转化为...
  • java将文件压缩成ZIP并加密

    千次阅读 2020-11-12 10:44:33
    1.导入pom依赖 <dependency> <groupId>net.lingala.zip4j<...zip4j</artifactId> <version>1.3.1</version> </dependency> 2.代码实现 public void reZipCsvFiles(Mul
  • Python3将文件压缩成zip格式

    千次阅读 2020-02-12 10:26:15
    例如我这里将 upload_load.py 文件压缩成upload_load.zip ,运行代码,在指定目的下就会生成:upload_load.zip 文件 #压缩文件 import time,zipfile class zip: def get_zip(self,files,zip_name): zp=zipfile....
  • // 用于将数据压缩成Zip文件格式 zos = new ZipOutputStream(baos); String[] keylist = key.split(","); for (String ossfile : keylist) { String type=ossfile.substring(0, ossfile.indexOf("*")); String name...
  • java多个文件压缩成zip文件

    千次阅读 2018-08-15 14:14:05
     文件压缩 */ private static void ZipFiles(java.io.File[] srcfile, java.io.File zipfile) { byte[] buf=new byte[1024]; ZipOutputStream out=null; try { out=new ZipOutputStream(new Fi...
  • 对于我们来说,java导出数据excel或其他数据文件,或者下载资源是开发中的家常便饭, 但是在导出的时候,如果点击一个按钮导出几百万条数据...2. 每到一定数量分成一个excel,压缩成zip包打包下载 3. 控制导出的数据量...
  •  * 打包成zip压缩文件    *     * @author admin    *    */   public   final   class  FileToZip {      private  FileToZip(){}      /**    * 将...
  • java实现Excel压缩成Zip导出

    千次阅读 2017-01-08 14:22:43
    1 概述 在web项目中常见的一种场景就是将文件...笔者今天分享将Excel导出后并压缩成zip包响应到浏览器端,希望对大家有所帮助。 2 实现思路 使用AEAI DP创建样例工程export_demo,创建测试数据表employee,
  • 【Python】将文件夹压缩成zip

    万次阅读 多人点赞 2019-06-24 15:14:21
    使用python将文件夹压缩成zip包的过程: 先创建空的zip文件,然后遍历读取文件夹中文件,依次塞进zip文件中,即完成压缩。 例如,要将testDir文件夹压缩成test.zip,并存放在同级目录。 实现代码如下: #!/usr/local...
  • // 导出文件zip压缩设置 Workbook book = GenerateXmlUtil.generateCreateXsl(headers, datas, "批量支付文件"); ZipEntry entry = new ZipEntry(vo.getId() + ".xls"); zipOutputStream....
  • springboot将多个文件压缩成zip流并通过ResponseEntity下载-不用将zip保存硬盘 场景:之前遇到需要请求多个文件同时返回的问题,想到用zip压缩后返回的办法,但是奈何网上全都是先保存硬盘,在返回文件流,或者nginx...
  • 7-zip 批量单个压缩.zip

    2019-07-01 00:05:34
    因为最近需要压缩许多文件夹和文件,一个一个手工压缩太累了,于是就写了一个批处理文件,放在文件所在目录下,双击就可以自动全部压缩完了,不会对已经是如.7z .zip .rar的压缩文件压缩,注意,压缩完之后会自动...
  • linux zip命令压缩zip文件详解

    万次阅读 2021-05-09 06:02:40
    功能描述:使用zip命令可以压缩zip文件。命令语法:zip[选项] [压缩文件] [文件]选项含义:选项含义-m将文件压缩之后,删除源文件-o将压缩文件设置和源文件一样的时间-q安静模式,在压缩的时候不显示命令的执行...
  • Java把文件压缩成.zip压缩包和解压.zip压缩包(ZipOutputStream、ZipInputStream)
  • Linux下将文件夹压缩成.zip命令

    千次阅读 2021-02-05 15:42:44
    zip -r  fileName.zip 文件夹名 -r //第归处理子文件夹
  • Java压缩文件和文件夹为zip格式

    千次阅读 2021-03-03 17:26:25
    工具类ZipUtils 如下: package utils; import java.io.File; import java.io.FileInputStream; import java.io.IOException;...import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream;
  • 最近整理出来的代码,以前好像做过将一堆二维码图片打包成zip的功能,突然看到代码,以前用Struts写的,换springboot框架后,我还是看看能不能整合一下以前那乱糟糟的代码 各种打包方式,文件夹下内容全部打包,...
  • Linux命令之压缩zip

    万次阅读 2022-05-23 09:52:26
    `zip` 命令的功能是用于压缩文件,解压命令为 `unzip`。压缩后不覆盖源文件,可以压缩目录。
  • Linux下以存储方式压缩成zip文件

    千次阅读 2018-04-17 11:30:03
    制作Android开机动画文件时,文件bootanimation.zip压缩模式需为存储模式。如果不是存储模式,开机界面将会出现黑屏的情况,无法正常播放。压缩命令如下:zip -r -0 bootanimation.zip part0 part1 desc.txt-r:压缩...
  • python压缩文件夹内所有文件为zip文件的方法本文实例讲述了python压缩文件夹内所有文件为zip文件的方法。分享给大家供大家参考。具体如下:用这段代码可以用来打包自己的文件夹为zip,我就用这段代码来备份import ...
  • 很简单的代码,很轻松的实现将多个文件压缩成一个包

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 309,748
精华内容 123,899
关键字:

压缩成zip

友情链接: 2767837.rar