使用java.util.zip壓縮文件夾,支持加密,增加描述
Java壓縮輔助類(支持文件夾壓縮,加密,增加描述)
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream;import nochump.util.extend.ZipOutput;
import com.training.commons.file.FileUtils;
/*
- <p>Title: </p>
- <p>desc:
- <p>Copyright: Copyright(c)Gb 2012</p>
- @author 三少
- @website www.ij2ee.com
- @time 下午4:00:13
- @version 1.0
@since */ public class ZipOutputStreamUtils {
public static void main(String args[]) throws IOException {
//zipFiles("D:\\zipTest","D:\\1.ZIP"); zipFilesWithPwd("D:\\zipTest","D:\\1.ZIP", "123456");
}
/*
- @param path 文件夾路徑
- @param returnFileName
@throws IOException */ public static void zipFiles(String path, String returnFileName)
throws IOException {
File inFile = new File(path); ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(
returnFileName));
zos.setComment("多文件處理"); zipFile(inFile, zos, ""); zos.close(); }
/*
壓縮時候加密.. */ public static void zipFilesWithPwd(String zipDir, String zipName,
String password) {
File file = new File(zipDir); byte[] zipByte = ZipOutput
.getEncryptZipByte(file.listFiles(), password);
FileUtils.writeByteFile(zipByte, new File(zipName));
}
public static void zipFile(File inFile, ZipOutputStream zos, String dir)
throws IOException {
if (inFile.isDirectory()) {
File[] files = inFile.listFiles(); for (File file : files) zipFile(file, zos, inFile.getName());
} else {
String entryName = null; if (!"".equals(dir)) entryName = inFile.getName(); else entryName = inFile.getName(); ZipEntry entry = new ZipEntry(entryName); zos.putNextEntry(entry); InputStream is = new FileInputStream(inFile); int len = 0; while ((len = is.read()) != -1) zos.write(len); is.close();
}
}
public static void deleteFile(File file) { if (file.exists()) { // 判斷文件是否存在
if (file.isFile()) { // 判斷是否是文件 file.delete(); // delete()方法 你應該知道 是刪除的意思; } else if (file.isDirectory()) { // 否則如果它是一個目錄 File files[] = file.listFiles(); // 聲明目錄下所有的文件 files[]; for (int i = 0; i < files.length; i++) { // 遍歷目錄下所有的文件 deleteFile(files[i]); // 把每個文件 用這個方法進行迭代 } } file.delete();
} else {
System.out.println("所刪除的文件不存在!" + '\n');
} }
}</pre>