java将文件打包成ZIP压缩文件的工具类实例

来源:互联网 发布:windows xp一键重装 编辑:程序博客网 时间:2024/05/22 00:36
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(">>>>>> 文件打包失败. <<<<<<");}}}

0 0
原创粉丝点击