Java压缩文件/文件夹

news/2024/11/16 12:25:59/

ZipOutputStream流、递归压缩。

        在关闭ZipOutputStream流之前,需要先调用flush()方法,强制将缓冲区所有的数据输出,以避免解压文件时出现压缩文件已损坏的现象。

/*** @param source    待压缩文件/文件夹路径* @param destination   压缩后压缩文件路径* @return*/
public static boolean toZip(String source, String destination) {try {FileOutputStream out = new FileOutputStream(destination);ZipOutputStream zipOutputStream = new ZipOutputStream(out);File sourceFile = new File(source);// 递归压缩文件夹compress(sourceFile, zipOutputStream, sourceFile.getName());zipOutputStream.flush();zipOutputStream.close();} catch (IOException e) {System.out.println("failed to zip compress, exception");return false;}return true;
}

private static void compress(File sourceFile, ZipOutputStream zos, String name) throws IOException {byte[] buf = new byte[1024];if(sourceFile.isFile()){// 压缩单个文件,压缩后文件名为当前文件名zos.putNextEntry(new ZipEntry(name));// copy文件到zip输出流中int len;FileInputStream in = new FileInputStream(sourceFile);while ((len = in.read(buf)) != -1){zos.write(buf, 0, len);}zos.closeEntry();in.close();} else {File[] listFiles = sourceFile.listFiles();if(listFiles == null || listFiles.length == 0){// 空文件夹的处理(创建一个空ZipEntry)zos.putNextEntry(new ZipEntry(name + "/"));zos.closeEntry();}else {// 递归压缩文件夹下的文件for (File file : listFiles) {compress(file, zos, name + "/" + file.getName());}}}
}

http://www.ppmy.cn/news/696587.html

相关文章

Linux下压缩文件夹命令

tar -zcvf 打包后生成的文件名全路径 要打包的目录 例子:把/xahot文件夹打包后生成一个/home/xahot.tar.gz的文件。 tar -zcvf /home/xahot.tar.gz /xahot zip 压缩方法: 压缩当前的文件夹 zip -r ./xahot.zip ./* -r表示递归 zip [参数] [打包后的文…

tar压缩和解压文件或文件夹

1. 使用tar压缩文件 tar -zcvf test.tar.gz ./test/ 该命令表示压缩当前文件夹下的文件夹test,压缩后缀名为test.tar.gz 如果不需要压缩成gz,只需要后缀为tar格式的,那么输入如下命令: tar -cvf test.tar ./test/ 2. 使用tar解…

Linux下压缩文件夹

tar -zcvf /home/xahot.tar.gz /xahot tar -zcvf 打包后生成的文件名全路径 要打包的目录 例子:把/xahot文件夹打包后生成一个/home/xahot.tar.gz的文件。 zip 压缩方法: 压缩当前的文件夹 zip -r ./xahot.zip ./* -r表示递归 zip [参数] [打包后的文件…

MYSQL中的utf8mb4(Unicode Transformation Format 8-bit MultiByte 4-byte)

Simply put In MySQL, the UTF8MB4 character set is an extension of the UTF8 character set. It allows you to store and handle a wider range of Unicode characters, including emojis and characters from various scripts and languages. The “UTF8MB4” name itse…

C#,数值计算——算术编码压缩技术与方法(Compression by Arithmetic Coding)源代码

算术编码的数据压缩 算术编码是无损和有损数据压缩算法中常用的一种算法。 这是一种熵编码技术,其中常见符号比罕见符号用更少的比特进行编码。与诸如霍夫曼编码之类的众所周知的技术相比,它具有一些优势。本文将详细描述CACM87算术编码的实现&#xf…

android os n9005,基于Android 10底层的LineageOS 17.1发布-老机型获Lineage16支持

昨日,作为原生项目最强大的lineage也正是发布了安卓10版本的LineageOS 17.1系统,官 网服务器也更新了支持LineageOS 17.1的手机固件列表。不仅如此,对于一些老一点的机型 目前官方也提供了lineageOS 16的支持,ROM乐园也会尽快收集相关刷机包到对应机型,方 便大家下载刷入 …

(四)Qt 动态手势识别“手掌随动”+“握拳选择”

系列文章目录 通过Qt实现手势识别控制软件操作相关系列技术方案 (一)Qt 将某控件、图案绘制在最前面的方法,通过QGraphicsScene模块实现 (二)Qt QGraphicsScene模块实现圆点绘制在所有窗体的最前方,实现圆…

SHA-256算法及示例

1. 引言 SHA-256(安全哈希算法,FIPS 182-2)是密码学哈希函数,其摘要长度为256位。SHA-256为keyless哈希函数,即为MDC(Manipulation Detection Code)。【MAC消息认证码有key,不是key…