1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Java如何将文件打包成Zip Rar压缩包

Java如何将文件打包成Zip Rar压缩包

时间:2022-12-12 10:38:02

相关推荐

Java如何将文件打包成Zip Rar压缩包

目录

1.将单个文件打成压缩包2.将E:\zip目录打成压缩包

1.将单个文件打成压缩包

需求:

将E盘下的test.xls文件打成压缩包保存到E盘目录下的target.zip文件中

代码实现:ZipUtil.java

import mons.io.IOUtils;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;/*** <p> @Title ZipUtil* <p> @Description 将单个文件打成压缩包** @author ACGkaka* @date /9/15 14:11*/public class ZipUtil {public static void main(String[] args) throws Exception {String dir = "E:\\test.xls";String zip = "E:\\target.zip";zip(dir, zip);}/*** 打包** @param dir 要打包的目录* @param zipFile 打包后的文件路径* @throws Exception*/public static void zip(String dir, String zipFile) throws Exception {try (ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFile))) {File sourceFile = new File(dir);out.putNextEntry(new ZipEntry(sourceFile.getName()));try (FileInputStream in = new FileInputStream(sourceFile)) {IOUtils.copy(in, out);} catch (Exception e) {throw new RuntimeException("打包异常: " + e.getMessage());}}}}

2.将E:\zip目录打成压缩包

需求:

将E盘zip文件夹下面的内容打成压缩包保存到E盘目录下的target.zip文件中

代码实现:ZipUtil.java

import java.io.FileOutputStream;import mons.io.IOUtils;import mons.lang3.ArrayUtils;import java.io.File;import java.io.FileInputStream;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;/*** <p> @Title ZipUtil* <p> @Description 文件夹打压缩包** @author ACGkaka* @date /9/15 13:48*/public class ZipUtil {public static void main(String[] args) throws Exception {String dir = "E:\\zip";String zip = "E:\\target.zip";String rar = "E:\\target.rar";zip(dir, zip);zip(dir, rar, true);}/*** 打包** @param dir要打包的目录* @param zipFile 打包后的文件路径* @throws Exception*/public static void zip(String dir, String zipFile) throws Exception {zip(dir, zipFile, false);}/*** 打包** @param dir 要打包的目录* @param zipFile 打包后的文件路径* @param includeBaseDir 是否包括最外层目录* @throws Exception*/public static void zip(String dir, String zipFile, boolean includeBaseDir) throws Exception {if (zipFile.startsWith(dir)) {throw new RuntimeException("打包生成的文件不能在打包目录中");}try (ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFile))) {File fileDir = new File(dir);String baseDir = "";if (includeBaseDir) {baseDir = fileDir.getName();}compress(out, fileDir, baseDir);}}public static void compress(ZipOutputStream out, File sourceFile, String base) throws Exception {if (sourceFile.isDirectory()) {base = base.length() == 0 ? "" : base + File.separator;File[] files = sourceFile.listFiles();if (ArrayUtils.isEmpty(files)) {// todo 打包空目录// out.putNextEntry(new ZipEntry(base));return;}for (File file : files) {compress(out, file, base + file.getName());}} else {out.putNextEntry(new ZipEntry(base));try (FileInputStream in = new FileInputStream(sourceFile)) {IOUtils.copy(in, out);} catch (Exception e) {throw new RuntimeException("打包异常: " + e.getMessage());}}}}

参考博客:/frankcheng5143/article/details/105129108

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。