Java如何递归压缩或压缩目录?
下文笔者讲述java代码递归压缩目录中文件的方法及示例分享,如下所示
1.使用 java.util.zip.ZipOutputStream来压缩文件 2.遍历文件 3.使用 java.util.zip.ZipEntry 将每一个文件放入压缩文件中例:java压缩多个文件的示例
package com.java265.example.zip; 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 ZipDirectoryExample { private List<String> fileList = new ArrayList<>(); public static void main(String[] args) { String dir = "D:\\Data"; String zipFile = "D:\\Data.zip"; ZipDirectoryExample zip = new ZipDirectoryExample(); zip.compressDirectory(dir, zipFile); } private void compressDirectory(String dir, String zipFile) { File directory = new File(dir); getFileList(directory); try (FileOutputStream fos = new FileOutputStream(zipFile); ZipOutputStream zos = new ZipOutputStream(fos)) { for (String filePath : fileList) { System.out.println("Compressing: " + filePath); // 创建一个zip条目。 String name = filePath.substring( directory.getAbsolutePath().length() + 1, filePath.length()); ZipEntry zipEntry = new ZipEntry(name); zos.putNextEntry(zipEntry); // 读取文件内容并写入zip输出流。 try (FileInputStream fis = new FileInputStream(filePath)) { byte[] buffer = new byte[1024]; int length; while ((length = fis.read(buffer)) > 0) { zos.write(buffer, 0, length); } // 关闭邮递区号。 zos.closeEntry(); } catch (Exception e) { e.printStackTrace(); } } } catch (IOException e) { e.printStackTrace(); } } /** * Get files list from the directory recursive to the sub directory. */ private void getFileList(File directory) { File[] files = directory.listFiles(); if (files != null && files.length > 0) { for (File file : files) { if (file.isFile()) { fileList.add(file.getAbsolutePath()); } else { getFileList(file); } } } } } ---运行以上代码,将输出以下信息 --- 这些文件都是文件夹中的文件 Compressing: D:\Data\test1.txt Compressing: D:\Data\test2.txt Compressing: D:\Data\tt.txt Compressing: D:\Data\bb.txt Compressing: D:\Data\jjjj.txt Compressing: D:\Data\bbbbbb.txt
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。