java中如何生成zip文件系统呢?

java问题王 Java每日一问 发布时间:2021-10-02 10:21:57 阅读数:18734 1 zip操作大全
下文讲述java代码生成zip文件的方法分享,如下所示:
实现思路:
    借助ZipOutputStream类对文件进行压缩操作
例:
package com.java265.other;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.Objects;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class test {
	/*
	 * java265.com 使用java代码生成一个压缩包的示例分享
	 */
	public static void main(String[] args) throws Exception {
		compressFileToZip("D:\\test2.txt", "D:\\test2.zip");
	}

	private static void compressFileToZip(String filePath,
		      String zipFilePath) {
		try (ZipOutputStream z = new ZipOutputStream(new FileOutputStream(zipFilePath))) {
		      //递归的压缩文件夹和文件
			doCompress("", filePath, z);
			//
			z.finish();
		    } catch (Exception e) {
		      e.printStackTrace();
		    }
		}

		private static void doCompress(String parentFilePath, String filePath, ZipOutputStream zos) {
	    File sourceFile = new File(filePath);
	    if (!sourcefile.exists()) {
	      return;
	    }
	    String zipEntryName = parentFilePath + "/" + sourceFile.getName();
	    if (parentFilePath.isEmpty()) {
	      zipEntryName = sourceFile.getName();
	    }
	    if (sourceFile.isDirectory()) {
	      File[] childFiles = sourceFile.listFiles();
	      if (Objects.isNull(childFiles)) {
	        return;
	      }
	      for (File childFile : childFiles) {
	        doCompress(zipEntryName, childFile.getAbsolutePath(), zos);
	      }
	    } else {
	      int len = -1;
	      byte[] buf = new byte[1024];
	      try (InputStream input = new BufferedInputStream(new FileInputStream(sourceFile))) {
	        zos.putNextEntry(new ZipEntry(zipEntryName));
	        while ((len = input.read(buf)) != -1) {
	          zos.write(buf, 0, len);
	        }
	      } catch (Exception e) {
	        e.printStackTrace();
	      }
	    }
	}

}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaProblem/202110/1342.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者