java压缩文件

来源:互联网 发布:js时间格式化format 编辑:程序博客网 时间:2024/05/19 23:11
import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.ArrayList;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;public class ZipFileTest {ZipOutputStream out = null;/** * 创建zip输出流 *  * @param zipFileName *            压缩后的文件名 * */public ZipOutputStream buildZipOut(String zipFileName) throws Exception {out = new ZipOutputStream(new FileOutputStream(zipFileName));return out;}/** * 关闭zip输出流 必须再压缩完之后关闭,否则后压缩的文件会覆盖前面压缩 * */public void closeZipOut() {if (out != null) {try {out.close();} catch (IOException e) {System.out.println(e.toString());}}}/** * 压缩文件,可以由zipFileOrDirector代替 *  * @param file *            传入的文件 * */public void zipFile(File file) throws Exception {FileInputStream in = new FileInputStream(file);// 创建zip文件条目,相当于产生一个空文件// 压缩后不带路径ZipEntry entry = new ZipEntry(file.getName());// 压缩后带路径,因为传入的文件名中带路径,以至于zip文件条目中也带了目录// ZipEntry entry = new ZipEntry(this.fileName);// 开始写入新的 ZIP 文件条目并将流定位到条目数据的开始处out.putNextEntry(entry);// 读取文件,并写入到压缩文件byte[] buffer = new byte[1024];int i = -1;while ((i = in.read(buffer)) != -1) {out.write(buffer, 0, i);}// 关闭当前 ZIP 条目并定位流以写入下一个条目out.closeEntry();in.close();// out.close();System.out.println("压缩完成");}/** * 压缩文件目录 *  * @param fileName *            传入的文件名 * */public void zipFileOrDirector(String fileDirector) throws Exception {File file = new File(fileDirector);ArrayList<File> files = checkFile(file, new ArrayList<File>());for (File file2 : files) {zipFile(file2);}out.close();}// 检查文件类别,返回文件列表public ArrayList<File> checkFile(File file, ArrayList<File> list) {if (file.isDirectory()) {File[] files = file.listFiles();for (File file2 : files) {// 递归检查,直到文件不为目录checkFile(file2, list);}} else {list.add(file);}return list;}public static void main(String[] args) {String fileName = "e:/temp/hello";// System.out.println(new File(fileName).getPath());ZipFileTest test = new ZipFileTest();System.out.println("e:/" + new File(fileName).getName() + ".zip");try {// test.zipFile(fileName,"e:/"+new File(fileName).getName()+".zip");// test.zipFileDirector(fileName,"e:/"+new// File(fileName).getName()+".zip");String zipFileName = "e:/222222.zip";test.buildZipOut(zipFileName);test.zipFileOrDirector(fileName);test.closeZipOut();} catch (Exception e) {System.out.println(e.toString());}}}


 

原创粉丝点击