话不多说直接上代码,如有任何问题欢迎大家留言指导。
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
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.ZipInputStream;
import org.apache.log4j.Logger;
public class ZipCompressUtil {
private static final Logger logger = Logger.getLogger(ZipCompressUtil.class);
/**
* 判断该路径下是否有文件,并将文件名称保存
* @param filePath
* @return
*/
public static List<String> getFileName(String filePath) {
List<String> fileNameArr = new ArrayList<String>();
File f = new File(filePath);
if (!f.exists()) {
logger.info(filePath + " not exists");
return fileNameArr;
}
File fa[] = f.listFiles();
for (int i = 0; i < fa.length; i++) {
File fs = fa[i];
if (!fs.isDirectory()) {
String fileName = fs.getName();
if (fileName.endsWith(".tsv.zip")) {
fileNameArr.add(fileName);
}
}
}
return fileNameArr;
}
/**
*
* @param filePath
* 文件路径
* @param outPutPath
* 解压后输出路径
*/
public static boolean zipDeCompress(List<String> fileNameArr , String filePath,String outPutPath) {
boolean flag = false;
long startTime = System.currentTimeMillis();
if (fileNameArr.size()!=0) {
try {
for (String fileName : fileNameArr) {
String path = filePath + fileName;
ZipInputStream Zin = new ZipInputStream(new FileInputStream(path));// 输入源zip路径
BufferedInputStream Bin = new BufferedInputStream(Zin);
File Fout = null;
ZipEntry entry;
try {
while ((entry = Zin.getNextEntry()) != null && !entry.isDirectory()) {
Fout = new File(outPutPath, entry.getName());
if (!Fout.exists()) {
(new File(Fout.getParent())).mkdirs();
}
FileOutputStream out = new FileOutputStream(Fout);
BufferedOutputStream Bout = new BufferedOutputStream(out);
int b;
while ((b = Bin.read()) != -1) {
Bout.write(b);
}
Bout.close();
out.close();
logger.info("解压文件-----"+fileName+"-----解压成功 ");
}
Bin.close();
Zin.close();
} catch (IOException e) {
e.printStackTrace();
return flag;
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
return flag;
}
}
long endTime = System.currentTimeMillis();
logger.info("解压文件共耗费时间: " + (endTime - startTime) + " ms");
flag = true;
return flag;
}
public static void main(String[] args) {
String filePath = "F:\\";
List<String> fileNameArr = getFileName(filePath);
String outPutPath = "F:\\Compress";
zipDeCompress(fileNameArr , filePath, outPutPath);
}
}