目录
1,前言
当前这个版本(2019年1月16日 00:17:43)现在只有单文件的压缩,待后续补充文件夹递归下载。
2,相关类
import java.util.zip.ZipEntry;//这个类用于表示一个压缩文件条目。
import java.util.zip.ZipOutputStream;//这个类实现了一个用于在压缩文件格式中写入文件的输出流过滤器。包括支持压缩和解压项。
相关说明,请参考jdk的文档
3,相关类或接口的继承与实现关系
ZipEntry
ZipOutputStream
4,源码如下
package com.wayne.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 ZipUtils {
private ZipUtils(){} // 隐藏构造函数,是个工具类
/**
* 压缩文件核心类
* @param inFile 要压缩的文件
* @param out 压缩文件的输出流
* @param dir 压缩文件的输出路径
* @throws IOException 抛出文件异常
*/
public static void doZip(File inFile, ZipOutputStream out,String dir) throws IOException {
String entryName = null;
if(!StringUtils.equals("",dir)){
entryName = dir + "/" + inFile.getName();
} else {
entryName = inFile.getName();
}
ZipEntry entry = new ZipEntry(entryName);
out.putNextEntry(entry);
int len = 0;
byte[] buffer = new byte[1024];
FileInputStream fis = new FileInputStream(inFile);
while ((len = fis.read(buffer)) > 0) {
out.write(buffer,0,len);
out.flush();
}
out.closeEntry();
out.close();
fis.close();
}
public static void main(String[] args) throws Exception {
String filePath = "G:\\tempFiles\\";
String fileName = "GreetingController.java";
String zipFileName = "GreetingController.zip";
File file = new File(filePath + fileName);
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(filePath+zipFileName));
ZipUtils.doZip(file,out,"");
}
}