Java中如何使用代码压缩文件夹呢?
下文笔者讲述使用java代码压缩文件夹的方法分享,如下所示:
实现思路: 只需引入java.util.Zip包 即可实现文件夹的压缩操作例:
package com.java265; import java.io.File; import java.io.FileInputStream; 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 ZipUtils { private List <String> fileList; private static final String OUTPUT_ZIP_FILE = "Folder.zip"; private static final String SOURCE_FOLDER = "D:\\Reports"; // SourceFolder path public ZipUtils() { fileList = new ArrayList < String > (); } public static void main(String[] args) { ZipUtils appZip = new ZipUtils(); appZip.generateFileList(new File(SOURCE_FOLDER)); appZip.zipIt(OUTPUT_ZIP_FILE); } public void zipIt(String zipFile) { byte[] buffer = new byte[1024]; String source = new File(SOURCE_FOLDER).getName(); FileOutputStream fos = null; ZipOutputStream zos = null; try { fos = new FileOutputStream(zipFile); zos = new ZipOutputStream(fos); System.out.println("Output to Zip : " + zipFile); FileInputStream in = null; for (String file: this.fileList) { System.out.println("File Added : " + file); ZipEntry ze = new ZipEntry(source + File.separator + file); zos.putNextEntry(ze); try { in = new FileInputStream(SOURCE_FOLDER + File.separator + file); int len; while ((len = in .read(buffer)) > 0) { zos.write(buffer, 0, len); } } finally { in.close(); } } zos.closeEntry(); System.out.println("Folder successfully compressed"); } catch (IOException ex) { ex.printStackTrace(); } finally { try { zos.close(); } catch (IOException e) { e.printStackTrace(); } } } public void generateFileList(File node) { // add file only if (node.isFile()) { fileList.add(generateZipEntry(node.toString())); } if (node.isDirectory()) { String[] subNote = node.list(); for (String filename: subNote) { generateFileList(new File(node, filename)); } } } private String generateZipEntry(String file) { return file.substring(SOURCE_FOLDER.length() + 1, file.length()); } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。