精华内容
下载资源
问答
  • Java 文件压缩

    2018-02-13 15:58:33
    www.sourcedev.cc点击打开链接
    www.sourcedev.cc点击打开链接
    展开全文
  • java文件压缩

    千次阅读 2014-04-09 18:34:10
    随时随地阅读更多技术实战干货,获取...使用java基本的zip库可以进行压缩,但是不支持中文文件名,会出现乱码,这里使用apache tools下的ant.jar可以解决这个问题。 压缩工具类ZipUtil代码: package com.home...

    随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、QQ技术交流群(183198395)。

    使用java基本的zip库可以进行压缩,但是不支持中文文件名,会出现乱码,这里使用apache tools下的ant.jar可以解决这个问题。

    压缩工具类ZipUtil代码:

    package com.home;
    
    import java.io.BufferedOutputStream;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.zip.Adler32;
    import java.util.zip.CheckedOutputStream;
    
    import org.apache.tools.zip.ZipEntry;
    import org.apache.tools.zip.ZipOutputStream;
    
    public class ZipUtil {
    	/**
    	 * 提供给外部压缩调用
    	 * 
    	 * @param src
    	 * @param des
    	 * @throws IOException
    	 */
    	public static void zip(String src, String des) throws IOException {
    		ZipOutputStream out = null;
    		try {
    			CheckedOutputStream cos = new CheckedOutputStream(
    					new FileOutputStream(des), new Adler32());
    			out = new ZipOutputStream(new BufferedOutputStream(cos));
    			out.setEncoding("GBK");
    			zip(new File(src), out, "");
    		} finally {
    			if (out != null) {
    				out.close();
    			}
    		}
    	}
    
    	/**
    	 * 压缩文件
    	 * 
    	 * @param file
    	 * @param out
    	 * @param base
    	 * @throws IOException
    	 */
    	private static void zip(File file, ZipOutputStream out, String base)
    			throws IOException {
    		if (file.isFile()) {
    			if (base.length() > 0) {
    				out.putNextEntry(new ZipEntry(base));
    			} else {
    				out.putNextEntry(new ZipEntry(file.getName()));
    			}
    			BufferedReader br = new BufferedReader(new InputStreamReader(
    					new FileInputStream(file), "ISO8859_1"));
    			int len;
    			while ((len = br.read()) != -1) {
    				out.write(len);
    			}
    			br.close();
    		} else if (file.isDirectory()) {
    			File[] subFiles = file.listFiles();
    			out.putNextEntry(new ZipEntry(base + File.separator));
    			base = base.length() != 0 ? base + File.separator : "";
    			if (subFiles != null) {
    				for (File subFile : subFiles) {
    					zip(subFile, out, base + subFile.getName());
    				}
    			}
    		}
    
    	}
    }
    

    测试类Test:

    package com.home;
    
    public class Test {
    	/** 源文件夹路径 */
    	private String folderSrcPath = "D://test//测试文件夹";
    	/** 压缩后的zip文件存放路劲 */
    	private String forderDesPath = "D://test//test1.zip";
    	/** 源文件路径 */
    	private String fileSrcPath = "D://test//测试.pdf";
    	/** 压缩后的zip文件存放路劲 */
    	private String fileDesPath = "D://test//test.zip";
    
    	public Test() {
    		try {
    			ZipUtil.zip(folderSrcPath, forderDesPath);
    			ZipUtil.zip(fileSrcPath, fileDesPath);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    	public static void main(String[] args) {
    		new Test();
    	}
    }
    

    点击下载ant.jar

    展开全文
  • JAVA 文件压缩及加密

    2015-11-03 19:30:37
    JAVA 文件压缩、文件解压 文件加密 文件解密。
  • JAVA文件压缩与解压缩实践(源代码+论文).zip JAVA文件压缩与解压缩实践(源代码+论文).zip
  • java 文件压缩和下载

    千次阅读 2017-12-22 16:56:43
    java文件压缩和下载
    
    

    压缩代码:

    public class FileZipUtil {  
      
        /** 
         * @description:将文件/文件夹生成指定格式的压缩文件
         * @autor:ym10159
         * @date:2017年12月22日 上午9:53:13
         * @param srcPath 源文件路径
         * @param targetPath 压缩文件保存路径 
         */  
        public static void compressedFile(String srcPath, String targetPath, String zipFileName){  
            File srcFile = new File(srcPath);
            File targetFile = new File(targetPath); 
            //压缩目录不存在,则创建
            if (targetFile.isDirectory() && !targetFile.exists()) {  
            	targetFile.mkdirs();  
            }  
            FileOutputStream fos = null;
            ZipOutputStream zos = null;
    		try {
    			fos = new FileOutputStream(targetPath + File.separator + zipFileName);
    			zos = new ZipOutputStream(new BufferedOutputStream(fos));  
    			compress(zos, srcFile, ""); 
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				if(null != zos){
    					zos.close();
    				}
    				if(null != fos){
    					fos.close();
    				}
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		} 
        }  
      
        private static void compress(ZipOutputStream zos, File file, String baseDir) throws Exception {  
            if (file.isDirectory()) {  
            	baseDir = file.getName() + File.separator;
            	compressDir(zos, file, baseDir);
            } else if (file.isFile()){ 
            	compressFile(zos, file, baseDir);
            }  
        }  
        
        private static void compressDir(ZipOutputStream zos, File file, String baseDir) throws Exception{
        	 File[] files = file.listFiles();  
             for (int i = 0; i < files.length; i++) {  
            	 /**递归调用*/
                 compress(zos, files[i], baseDir);
             }  
        }
        
        private static void compressFile(ZipOutputStream zos, File file, String baseDir) throws Exception{
        	BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));  
        	zos.putNextEntry(new ZipEntry(baseDir + file.getName()));  
        	int len = 0;  
        	byte[] buffer = new byte[1024];  
        	while ((len = bis.read(buffer)) != -1) {  
        		zos.write(buffer, 0, len);  
        	}  
        	bis.close();  
        }
    }  

    注意点:

            1.流的关闭顺序,否则会报stream closed异常

            2.递归的调用


    下载代码:

    public void download(HttpServletRequest request, HttpServletResponse response) throws IOException{
    		String zipDownloadPath = attachmentService.download(orderCodeList);
    		
    		File file = new File(zipDownloadPath);
    		InputStream fis = new BufferedInputStream(new FileInputStream(file));
    		byte[] buffer = new byte[fis.available()];
    		fis.read(buffer);
    		fis.close();
    		
    		response.reset();
    		response.setCharacterEncoding("UTF-8");
    		String filename = file.getName().replaceAll("\\s", "");
    		filename = URLEncoder.encode(filename,"UTF-8");
    		response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename));
    		response.addHeader("Content-Length", "" + file.length());
    		OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
    		response.setContentType("application/octet-stream");
    		toClient.write(buffer);
    		toClient.flush();
    		toClient.close();
    	}

    注意点:

            1.下载弹出框的设置,

        response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename));
            2.在谷歌和火狐浏览器中,不能更改目录存放,火狐默认存放在桌面,谷歌默认存放在C:\Users\用户名\Downloads下。而QQ浏览器有更改目录的功能。至于在谷歌和火狐浏览器中,不能更改存放目录的原因暂时还未解决。有解决的人,记得告诉我答案。
    展开全文
  • 我们可以用它们进行zip文件压缩和解压缩。 代码 package util; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOu...

    java.io为我们提供了ZipInputStream、ZipOutputStream两个流。我们可以用它们进行zip文件的压缩和解压缩。

    代码

    package util;
    
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipInputStream;
    import java.util.zip.ZipOutputStream;
    
    public class ZipUtil {
    	public static void zip(File[] src,File tar) {
    		try {
    			FileOutputStream fos = new FileOutputStream(tar);
    			ZipOutputStream zos = new ZipOutputStream(fos);
    			for(int i=0; i<src.length; ++i) {
    				String fileName = src[i].getName();//获得文件名
    				FileInputStream fis = new FileInputStream(src[i]);
    				ByteArrayOutputStream baos = new ByteArrayOutputStream();
    				int len = -1;
    				byte[] buf = new byte[1024];
    				while((len = fis.read(buf)) != -1) {
    					baos.write(buf, 0, len);
    				}
    				baos.close();
    				fis.close();
    				byte[] fileContent = baos.toByteArray();//获得文件内容
    				ZipEntry zipEntry = new ZipEntry(fileName);//利用文件名创建条目
    				zos.putNextEntry(zipEntry);//插入条目
    				zos.write(fileContent);//写入条目内容
    				zos.closeEntry();//关闭条目
    			}
    			zos.close();
    			fos.close();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    	
    	public static void unZip(File zipFile, File path) {
    		try {
    			if(!path.exists()) {
    				path.mkdirs();
    			}
    			FileInputStream fis = new FileInputStream(zipFile);
    			ZipInputStream zis = new ZipInputStream(fis);
    			ZipEntry zipEntry = null;
    			while((zipEntry = zis.getNextEntry()) != null) {//获取条目
    				String fileName = zipEntry.getName();//获取文件名
    				File file = new File(path.getAbsolutePath() + "/./" + fileName);
    				ByteArrayOutputStream baos = new ByteArrayOutputStream();
    				int len = -1;
    				byte[] buf = new byte[1024];
    				while((len = zis.read(buf)) != -1) {
    					baos.write(buf, 0, len);
    				}
    				baos.close();
    				byte[] fileContent = baos.toByteArray();//获取条目内容(即文件内容)
    				FileOutputStream fos = new FileOutputStream(file);
    				fos.write(fileContent);
    				fos.close();
    			}
    			
    			zis.close();
    			fis.close();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		
    	}
    }
    
    

    测试代码

    @org.junit.Test
    	public void testZIP() throws Exception {
    		File[] files = new File[3];
    		files[0] = new File("E:\\waster\\Archiver1\\1.txt");
    		files[1] = new File("E:\\waster\\Archiver1\\2.png");
    		files[2] = new File("E:\\waster\\Archiver1\\3.txt");
    		File zip = new File("E:\\waster\\Archiver2\\bsm.zip");
    		ZipUtil.zip(files, zip);
    		File path = new File("E:\\waster\\Archiver2");
    		ZipUtil.unZip(zip, path);
    	}
    

    测试结果

    E:\waster\Archiver2文件下生成了bsm.zip文件,并成功解压出三个源文件

    展开全文
  • java文件压缩

    千次阅读 2014-04-09 22:34:37
    随时随地阅读更多技术实战干货,获取项目源码、学习资料,请...在java文件压缩中使用的是org.apache.tools.zip.ZipOutputStream,本文使用org.apache.tools.ant.taskdefs.Zip来进行压缩,更方便,同样支持中文无乱码...
  • java文件压缩

    2019-06-11 11:46:43
    压缩文件 创建OutputStream创建ZipOutputStream创建条目ZipEntry创建InputStream文件读写 解压文件 创建InputStream创建ZipInputStream创建条目ZipEntry创建OutputStream文件读写 实例 import java.io.File; ...
  • 1、使用Gzip进行简单的文件压缩 GZIP接口相对比较简单,如果只要对单个文件进行压缩,那么使用GZIP可能是最好的选择。 import java.io.*; import java.util.zip.*;/** * 使用GZIP进行简单的压缩,解压缩 * *
  • java文件压缩

    千次阅读 2014-04-10 10:07:54
    在前面的文章中都是将单个文件或者文件夹进行压缩,现在我们可以把不同路劲下的多个文件或者文件夹压缩到一起,生成指定的压缩文件,这里使用的是java自带的压缩方式,不支持中文无乱码: 测试类Test: packa...
  • java 文件压缩 GZIP

    2013-10-11 13:51:54
    转自:...   压缩文件: import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.
  • JAVA文件压缩、解压

    千次阅读 2016-01-16 13:36:15
    zip文件是常用的压缩文件JAVA中对其也提供了支持,我们可以很方便的对zip文件进行操作。
  • Java 文件压缩及下载

    千次阅读 2019-03-16 17:59:01
    ** * @author zshuo * @date 2019/3/16 ... * 把文件打成压缩包并保存在本地硬盘 */ public static void saveZipFiles(List&amp;lt;String&amp;gt; srcfiles, String zipFilePath, String z...
  • Java文件压缩工具类ZipUtils学习笔记

    千次阅读 2018-08-19 07:51:23
    最近工作中用到了文件的压缩,经过在网上查询和自己的摸索总结如下工具了,支持文件压缩,嵌套文件压缩; package utils; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream...
  • 最近工作中需要生成指定的多层文件目录,然后把文件压缩打包下载,当时对这方面的知识并不熟悉,所以花了大量时间来调试程序,目前处理好了mark以下,以方便自己以后查看,直接上代码了: 这是工作中用到的zip打包...
  • Java文件压缩与解压缩(三)

    千次阅读 2012-12-24 12:08:02
    import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; impor
  • import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.zip.GZIPInputStream; ...
  • Java程序可以使用ZIP API 能中来进行文件压缩。本文将介绍Java ZIP API是如何使用。ZipFile类Java ZipFile类可以用来读取ZIP文件。为了使用ZipFile类,首先必须创建ZipFile实例。ZipFile zipFile = new ZipFile("d...
  • 最近在看java se 的IO 部分 , 看到 java文件压缩和解压比较有意思,主要用到了两个IO流-ZipInputStream, ZipOutputStream,不仅可以对文件进行压缩,还可以对文件夹进行压缩和解压。  ZipInputStream位于...
  • ![图片说明](https://img-ask.csdn.net/upload/201707/22/1500714623_837043.png)
  • java文件压缩解压加密解密之zip4j

    千次阅读 2019-03-19 16:52:23
    throw new ZipException("压缩文件不合法,可能已经损坏!"); } File file = new File(dest); if (file.isDirectory() && !file.exists()) { file.mkdirs(); } if (zfile.isEncrypted()) { zfile.set...
  • 由于jdk自带的压缩功能存在编码问题,所以使用apache工具包。... * @function:文件zip压缩 * @param zipPath * 压缩目标路径 * @param srcPath * 被压缩文件路径 * @throws BusinessException ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,584
精华内容 6,233
关键字:

java文件压缩

java 订阅