⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ziputils.java

📁 该源代码可以压缩文件或者文件夹
💻 JAVA
字号:
package com.aqiao.file;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipUtils {

	/**
	 * 功能说明:文件压缩
	 * 
	 * @author jimmyaqiao
	 * @param srcPath
	 *            目录或者一个文件
	 * @param destFileURL
	 *            指定的目录
	 * @throws Exception
	 */
	public static void compressFile(String srcPath, String destFileURL)
			throws Exception {

		ArrayList fileNames = new ArrayList();
		ArrayList files = new ArrayList();
		try {

			File rootFile = new File(srcPath);
			// File destFile = new File(destFileURL);
			// destFile.deleteOnExit();
			FileOutputStream fileOutputStream = new FileOutputStream(
					destFileURL);
			
			ZipOutputStream zipOutputStream = new ZipOutputStream(
					fileOutputStream);
			listFile(rootFile, fileNames, files);
			for (int i = 0; i < fileNames.size(); i++) {
				FileInputStream fileInputStream = new FileInputStream(
						(File) files.get(i));
				ZipEntry zipEntry = new ZipEntry((String) fileNames.get(i));
				zipOutputStream.putNextEntry(zipEntry);
				byte[] buffer = new byte[1024];// 需要按照文件大小分配大小
				// 需要解决不能处理中文名bug
				while (fileInputStream.read(buffer) != -1) {
					zipOutputStream.write(buffer);
				}
				zipOutputStream.closeEntry();
				fileInputStream.close();
			}
			zipOutputStream.close();

		} catch (IOException e) {
			throw new Exception(e);
		}
	}

	private static void listFile(File parentFile, List nameList, List fileList) {
		if (parentFile.isDirectory()) {
			File[] files = parentFile.listFiles();
			for (int i = 0; i < files.length; i++) {
				listFile(files[i], nameList, fileList);
			}
		} else {
			fileList.add(parentFile);
			nameList.add(parentFile.getName());
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -