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(">>>>>> 文件打包失败. <<<<<<");
    		}
    	}
    }
    

      

  • 相关阅读:
    19c 新特性: Hint Usage Reports详解
    byte buddy学习笔记
    彻底告别“人工+Excel”低效模式,传统制造业实现“一站式”数据化管理
    有的人想在上班之余做兼职,并且不想投入太多钱
    2019你为什不选择创业?是因为什么原因?
    深入理解pandas读取excel,txt,csv文件等命令
    劳务派遣公司是怎么盈利的?
    为什么穷人大多不敢创业?
    30多岁了仍一事无成,除了去工厂上班还有哪些出路?
    MySQL Change Data Directory
  • 原文地址:https://www.cnblogs.com/google4y/p/3507526.html
Copyright © 2011-2022 走看看