可以对文件夹和文件进行压缩
package utils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class demo {
private static ZipOutputStream zipOut;
// 创建文件输入流对象
private static FileInputStream in;
public static void main(String[] args) throws IOException {
String file="C:/Users/xtsscx/Desktop/uploadify";
String zipFile="C:/Users/xtsscx/Desktop/temp.zip";
zipSingleFile( file, zipFile);
}
public static boolean zipSingleFile(String file, String zipFile) throws IOException {
boolean bf = true;
File f = new File(file);
if (!f.exists()) {
System.out.println("文件不存在");
return false;
}
File ff = new File(zipFile);
if (!ff.exists()) {
ff.createNewFile();
}
// 创建文件输出流对象
FileOutputStream out = new FileOutputStream(zipFile);
// 创建ZIP数据输出流对象
zipOut = new ZipOutputStream(out);
// 得到文件名称
String fileName = file.substring(file.lastIndexOf('/') + 1, file.length());
// 创建指向压缩原始文件的入口
bf=setZipFile(f,"/");
if(!bf){
return bf;
}
zipOut.close();
out.close();
return bf;
}
private static boolean setZipFile(File f, String directory) throws IOException{
if (!f.exists()) {
System.out.println("文件不存在");
return false;
}
if(f.isDirectory()){
//ZipEntry对象new的时候用的是相对路径
zipOut.putNextEntry(entry);
File[] fs = f.listFiles();
for (File file : fs) {
setZipFile(file,directory+f.getName()+"/");
}
}else{
ZipEntry entry = new ZipEntry(directory+f.getName());
zipOut.putNextEntry(entry);
// 创建文件输入流对象
in = new FileInputStream(f);
// 向压缩文件中输出数据
int number = 0;
byte[] buffer = new byte[512];
while ((number = in.read(buffer)) != -1) {
zipOut.write(buffer, 0, number);
}
in.close();
}
return true;
}
}