JavaSE 面向对象程序设计进阶 IO 压缩流 解压缩流

server/2024/9/23 14:13:59/

目录

解压缩流

压缩流

解压缩流

压缩包

压缩包里面的每一个文件在java中都是一个ZipEntry对象

把每一个ZipEntry按照层级拷贝到另一个文件夹当中

import java.io.*;
import java.util.Date;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;public class Main {public static void main(String[] args){//创建一个File表示要解压的压缩包File src=new File("D\\untitled.zip");//创建一个File表示解压的目的地File dest=new File("D\\");}public static void unzip(File src,File dest) throws IOException {//创建一个压缩流来读取压缩包中的数据ZipInputStream zip=new ZipInputStream(new FileInputStream(src));ZipEntry entry;while((entry=zip.getNextEntry())!=null){System.out.println(entry);if(entry.isDirectory()){//文件夹:需要在目的地dest处创建一个同样的文件夹File file=new File(dest,entry.toString());file.mkdirs();}else {//文件:需要读取压缩包中的文件,并且把它存放到目的地dest文件夹中FileOutputStream fos=new FileOutputStream(new File(dest,entry.toString()));int b;while((b=zip.read())!=-1){//写到目的地fos.write(b);}fos.close();//表示在压缩包中的一个文件处理完毕了zip.closeEntry();}}zip.close();}
}

压缩流

压缩单个文件

import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;public class Main {public static void main(String[] args) throws IOException {//创建File对象表示要压缩的文件File src=new File("untitled\\a.txt");//创建File对象表示压缩包的位置File dest=new File("untitled\\");//调用方法用来压缩toZip(src,dest);}private static void toZip(File src, File dest) throws IOException {//常见压缩流关联压缩包ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(new File(dest,"a.zip")));//创建ZipEntry对象,表示压缩包里面的每一个文件和文件夹ZipEntry entry=new ZipEntry("a.txt");//把ZipEntry对象放到压缩包中zos.putNextEntry(entry);//把src文件夹中的数据写到压缩包当中FileInputStream fis=new FileInputStream(src);int b;while((b=fis.read())!=-1)zos.write(b);zos.closeEntry();zos.close();}
}

压缩整个文件夹

import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;public class Main {public static void main(String[] args) throws IOException {//创建File对象表示要压缩的文件夹File src=new File("untitled\\a");//创建File对象表示压缩包放在哪里(压缩包的父级路径)File destParent=src.getParentFile();//创建File对象表示压缩包的路径File dest=new File(destParent,src.getName()+".zip");//创建压缩流关联压缩包ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(dest));//获取src里面的每一个文件,变成ZipEntry对象,放到压缩包中//重点/** 参数一:数据源* 参数二:压缩流* 参数三:压缩包内部的路径* */toZip(src,zos,"");//释放资源zos.close();}public static void toZip(File src,ZipOutputStream zos,String name) throws IOException {//进入src文件夹File []files=src.listFiles();//遍历数组for (File file : files) {if(file.isFile()){//判断是文件,变成ZipEntry对象,放入压缩包当中ZipEntry entry=new ZipEntry(name+"\\"+file.getName());zos.putNextEntry(entry);//读取文件中的数据,写到压缩包FileInputStream fis=new FileInputStream(file);int b;while((b=fis.read())!=-1){zos.write(b);}fis.close();zos.closeEntry();}else {//判断是文件夹,递归...toZip(file,zos,name+"\\"+file.getName());}}}
}

个人号推广

博客主页

朱道阳-CSDN博客

Web后端开发

https://blog.csdn.net/qq_30500575/category_12624592.html?spm=1001.2014.3001.5482

Web前端开发

https://blog.csdn.net/qq_30500575/category_12642989.html?spm=1001.2014.3001.5482

数据库开发

https://blog.csdn.net/qq_30500575/category_12651993.html?spm=1001.2014.3001.5482

项目实战

https://blog.csdn.net/qq_30500575/category_12699801.html?spm=1001.2014.3001.5482

算法与数据结构

https://blog.csdn.net/qq_30500575/category_12630954.html?spm=1001.2014.3001.5482

计算机基础

https://blog.csdn.net/qq_30500575/category_12701605.html?spm=1001.2014.3001.5482

回忆录

https://blog.csdn.net/qq_30500575/category_12620276.html?spm=1001.2014.3001.5482


http://www.ppmy.cn/server/62240.html

相关文章

ArcGIS Pro SDK (八)地理数据库 8 拓扑

ArcGIS Pro SDK (八)地理数据库 8 拓扑 文章目录 ArcGIS Pro SDK (八)地理数据库 8 拓扑1 开放拓扑和进程定义2 获取拓扑规则3 验证拓扑4 获取拓扑错误5 标记和不标记为错误6 探索拓扑图7 找到最近的元素 环境:Visual …

Spring Boot 3.3 【二】Spring Boot自动配置机制深度解析

简单动作,深刻联结。在这技术海洋,我备好舟,等你扬帆。启航吧! 🌟点击【关注】,解锁定期的技术惊喜,让灵感与知识的源泉不断涌动。 👍一个【点赞】,如同心照不宣的默契&a…

PostgreSQL安装/卸载(CentOS、Windows)

说明:PostgreSQL与MySQL一样,是一款开源免费的数据库技术,官方口号:The World’s Most Advanced Open Source Relational Database.(世界上最先进的开源关系数据库),本文介绍如何在Windows、Cen…

打造你的智能家居指挥中心:基于STM32的多协议(zigbee、http)网关(附代码示例)

1. 项目概述 随着物联网技术的蓬勃发展,智能家居正逐步融入人们的日常生活。然而,市面上琳琅满目的智能家居设备通常采用不同的通信协议,导致不同品牌设备之间难以实现互联互通。为了解决这一难题,本文设计了一种基于STM32的多协…

VIM模式之间的切换

命令行界面下,常用的文本编辑器是 VI / VIM(VI增强版),VI 是 Linux 最通用的文本编辑器,VIM相较于VI,提供了代码高亮等功能,两者用法完全兼容; 1. 进入 VIM 工作界面 vim 文件名 2. 进入编辑模式 三种方…

基于springboot的鲜花管理系统

系统文档需要联系,白嫖勿扰

第二十一条:为传诸后世而设计接口

这章节主要就是讲解默认(default)方法。 Java8引入了默认方法,目的就是允许向现有的接口中添加方法。但是向现有的接口中添加新方法还是充满风险的。 在存在默认方法的情况下,一个接口的现有实现可能在编译时没有错误或警告&#…

网关设备BL122实现Modbus RTU/TCP转Profinet协议

Modbus与Profinet是两种广泛应用于工业自动化领域的通信协议:Modbus因其简单性和兼容性,在许多工业设备中得到广泛应用;而Profinet提供了高速、高精度的通信能力,适合于复杂控制系统和实时应用,但两者之间的差异导致了…