zoukankan      html  css  js  c++  java
  • java将文件打包成ZIP压缩文件的工具类实例

    package com.lanp;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    
    /**
     * 将文件打包成ZIP压缩文件
     * @author LanP
     * @since 2012-3-1 15:47
     */
    public final class FileToZip {
    	
    	private FileToZip() {
    		
    	}
    	
    	/**
    	 * 将存放在sourceFilePath目录下的源文件,打包成fileName名称的ZIP文件,并存放到zipFilePath。
    	 * @param sourceFilePath 待压缩的文件路径
    	 * @param zipFilePath	 压缩后存放路径
    	 * @param fileName		 压缩后文件的名称
    	 * @return flag
    	 */
    	public static boolean fileToZip(String sourceFilePath,String zipFilePath,String fileName) {
    		boolean flag = false;
    		File sourceFile = new File(sourceFilePath);
    		FileInputStream fis = null;
    		BufferedInputStream bis = null;
    		FileOutputStream fos = null;
    		ZipOutputStream zos = null;
    		
    		if(sourceFile.exists() == false) {
    			System.out.println(">>>>>> 待压缩的文件目录:" + sourceFilePath + " 不存在. <<<<<<");
    		} else {
    			try {
    				File zipFile = new File(zipFilePath + "/" + fileName + ".zip");
    				if(zipFile.exists()) {
    					System.out.println(">>>>>> " + zipFilePath + " 目录下存在名字为:" + fileName + ".zip" + " 打包文件. <<<<<<");
    				} else {
    					File[] sourceFiles = sourceFile.listFiles();
    					if(null == sourceFiles || sourceFiles.length < 1) {
    						System.out.println(">>>>>> 待压缩的文件目录:" + sourceFilePath + " 里面不存在文件,无需压缩. <<<<<<");
    					} else {
    						fos = new FileOutputStream(zipFile);
    						zos = new ZipOutputStream(new BufferedOutputStream(fos));
    						byte[] bufs = new byte[1024*10];
    						for(int i=0;i<sourceFiles.length;i++) {
    							// 创建ZIP实体,并添加进压缩包
    							ZipEntry zipEntry = new ZipEntry(sourceFiles[i].getName());
    							zos.putNextEntry(zipEntry);
    							// 读取待压缩的文件并写进压缩包里
    							fis = new FileInputStream(sourceFiles[i]);
    							bis = new BufferedInputStream(fis,1024*10);
    							int read = 0;
    							while((read=bis.read(bufs, 0, 1024*10)) != -1) {
    								zos.write(bufs, 0, read);
    							}
    						}
    						flag = true;
    					}
    				}
    			} catch (FileNotFoundException e) {
    				e.printStackTrace();
    				throw new RuntimeException(e);
    			} catch (IOException e) {
    				e.printStackTrace();
    				throw new RuntimeException(e);
    			} finally {
    				// 关闭流
    				try {
    					if(null != bis) bis.close();
    					if(null != zos) zos.close();
    				} catch (IOException e) {
    					e.printStackTrace();
    					throw new RuntimeException(e);
    				}
    			}
    		}
    		
    		return flag;
    	}
    	
    	/**
    	 * 将文件打包成ZIP压缩文件,main方法测试
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		String sourceFilePath = "C:\home\lp20120301";
    		String zipFilePath = "C:\home";
    		String fileName = "lp20120301";
    		boolean flag = FileToZip.fileToZip(sourceFilePath, zipFilePath, fileName);
    		if(flag) {
    			System.out.println(">>>>>> 文件打包成功. <<<<<<");
    		} else {
    			System.out.println(">>>>>> 文件打包失败. <<<<<<");
    		}
    	}
    }
    

      

  • 相关阅读:
    C++面向对象笔记:继承、派生
    教你制作伪静态
    安装android环境别忘了加个环境变量sdk_home
    javascript获取asp.net后台代码的方法
    一天学会PHP(转)
    access数据库里面用sql语句随机调用一条数据
    【转】 android sdk setup时出现:HTTPS SSL error , Server:10.159.192.62
    AutoCode下载及具体使用方法
    讲故事谈.NET委托:一个C#睡前的故事
    使用activeskin控件制作VB和易语言的皮肤的视频教程
  • 原文地址:https://www.cnblogs.com/google4y/p/3507526.html
Copyright © 2011-2022 走看看