java壓縮和解壓文件

package hhf.mail;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;

/**
 * 壓縮文件、解壓壓縮文件
 * @author HHF 
 * 2014年12月30日
 */
public class ZIP {

	/**
	 * 功能:壓縮多個文件成一個zip文件
	 * @param srcfile:源文件列表
	 * @param zipfile:壓縮後的文件
	 */
	public static void zipFiles(File[] srcfile, File zipfile) {
		byte[] buf = new byte[1024];
		try {
			// ZipOutputStream類:完成文件或文件夾的壓縮
			ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipfile));
			for (int i = 0; i < srcfile.length; i++) {
				FileInputStream in = new FileInputStream(srcfile[i]);
				out.putNextEntry(new ZipEntry(srcfile[i].getName()));
				int len;
				while ((len = in.read(buf)) > 0) {
					out.write(buf, 0, len);
				}
				out.closeEntry();
				in.close();
			}
			out.close();
			System.out.println("壓縮完成.");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 功能:解壓縮
	 * @param zipfile:需要解壓縮的文件
	 * @param descDir:解壓後的目標目錄
	 * @throws IOException
	 */
	@SuppressWarnings("rawtypes")
	public static void unZipFiles(File zipfile, String descDir) {
		File file = new File(descDir);
		if (!file.exists()) {
			try {
				file.mkdir();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		try {
			ZipFile zf = new ZipFile(zipfile);
			for (Enumeration entries = zf.entries(); entries.hasMoreElements();) {
				ZipEntry entry = (ZipEntry) entries.nextElement();
				String zipEntryName = entry.getName();
				InputStream in = zf.getInputStream(entry);
				OutputStream out = new FileOutputStream(descDir + zipEntryName);
				byte[] buf1 = new byte[1024];
				int len;
				while ((len = in.read(buf1)) > 0) {
					out.write(buf1, 0, len);
				}
				in.close();
				out.close();
				System.out.println("解壓縮完成.");
			}

			zf.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		// 需要解壓縮的文件
		File file = new File("D:\\test");
		File filenew = new File("D:\\test.zip");
		zipFiles(file.listFiles(), filenew);

		// 解壓後的目標目錄
		String dir = "D:\\workspace\\";
		unZipFiles(filenew, dir);
	}
}

    旨在大家需要的時候方便作爲工具類使用

發佈了30 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章