`
yuanfen860913
  • 浏览: 115667 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

java 实现目录内内容压缩 zip

阅读更多

package com.yd.common;

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.ZipOutputStream;


public class ZipOp {

/**
* 实现目录内内容压缩
* @param zipFile压缩文件的保存路径
* @param filepath压缩文件目录
*/
public void zip(String zipFile,String filepath) {

try {
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile));
FileInputStream fis = null;
ZipEntry ze = null;
List<String> fileList = allFile(filepath);
int length = 0;
byte[] b = new byte[1024];
for(int i = 0; i < fileList.size(); i ++){
//System.out.println("filePath: " + fileList.get(i));
File file = new File(fileList.get(i));
fis = new FileInputStream(file);
ze = new ZipEntry(file.getName());
zos.putNextEntry(ze);
while((length = fis.read(b)) != -1){
zos.write(b, 0, length);
}
}
fis.close();
zos.close();
System.out.println("done!");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}
/**
* 遍历目录结构,返回文件所对应的文件结构【只是多级遍历】
*/
private List<String> allFile(String path){
List<String> filePaths = new ArrayList<String>();
File file = new File(path);
if(file.isDirectory()){
String[] subFilePaths = file.list();
for(int i = 0; i < subFilePaths.length; i ++){
filePaths.addAll(allFile(path + subFilePaths[i]));//递归
}
}else{
filePaths.add(path);
}
return filePaths;
}
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics