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

		}

	}

}

  

你可能感兴趣的:(java)