(JAVA)-IO-压缩流

当我们需要传输的文件过大时,就可以先将文件压缩再传输。

解压缩流:输入流,读取压缩包中的文件

压缩包中的每个文件都是一个zipEntry对象,解压本质就是把每一个zipEntry对象按照层级拷贝到本地另一个文件夹中

以下是解压的过程:

File src =new File("D:\\aaa.zip");//创建一个文件表示要解压的压缩包
FIle dest =new FIle("D:\\");
ZipInputStream zis =new ZipInputStream(new FileInputStream(src));
//创建一个解压缩流
zipEntry entry;
while((entry=zis.getentry)!=null)
{
//获取zipEntry对象,会把压缩包里面所有文件,文件夹获取,读取完返回null;
if(entry.isDirectory()){
FIle file =new File(dest,entry.toString())
file.mkdirs();
}else{
FileOutputStream fos=new FileOutputStream(new File(dest,entry.toString()));
int b;
while((b=zis.read())!=-1){
fos.wrte(b);
}
fos.close();
zis.closeEntry()://表示在压缩包中的一个文件处理完毕了
}
}
zis.close();//关流

 压缩:把每一个文件|文件夹看成zipEntry对象放入压缩包中

public static void main(String[] args) throws IOException {
        File src=new File("D:\\aaa");//创建要压缩的文件
        File dest=new File(src.getParentFile(),src.getName() +".zip");//创建要压缩包的位置
        ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(dest));
      toZip(src,zos,src.getName());
      zos.close();//关闭流
    }
public static void toZip(File src,ZipOutputStream zos,String name) throws IOException {
        File[] files = src.listFiles();
        for (File file : files) {
            if (file.isFile()) {//创建enTry对象并写入
                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());
            }
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/233375.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

hdlbits系列verilog解答(mt2015_q4)-54

文章目录 一、问题描述二、verilog源码三、仿真结果一、问题描述 本次使用系列文章52和53中实现的子模块,实现以下组合逻辑电路。 二、verilog源码 module top_module (input x, input y, output z);wire [3:0

EPICS modbus 模块数字量读写练习

本文使用modbus slave软件模拟一个受控的modbus设备,此模拟设备提供如下功能: 1、线圈组1,8个线圈,起始地址为0,数量为8,软件设置如下(功能码1),用于测试功能码5,一次写一个线圈&am…

了解红帽认证

红帽公司成立于1993年,是全球首家收入超10亿美元的开源公司,总部位于美国,分支机构遍布全球。红帽公司作为全球领先的开源和Linux系统提供商,其产品已被业界广泛认可并使用,尤其是RHEL系统在业内拥有超高的Linux系统市…

利用Node.js和cpolar实现远程访问,无需公网IP和路由器设置的完美解决方案

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

Dockerfile的介绍和使用

什么是dockerfile? Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。 docker build命令用于从Dockerfile构建映像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerf…

c语言:理解和避免野指针

野指针的定义: 野指针是指一个指针变量存储了一个无效的地址,通常是一个未初始化的指针或者指向已经被释放的内存地址。当程序尝试使用野指针时,可能会导致程序崩溃、内存泄漏或者其他不可预测的行为。因此,在编程中需要特别注意…

二叉树前中后序遍历——(非)递归写法

文章目录 前言递归实现非递归实现力扣习题 红色:前序遍历顺序绿色:中序遍历顺序蓝色:后续遍历顺序 前言 二叉树遍历也分为两种 广度优先遍历(Breadth-first order):尽可能先访问距离根最近的节点&#x…

未成年人保护成为《蛋仔派对》最高优先级工作,与家长携手保护孩子健康成长

《蛋仔派对》于近日发布致家长的第二封信,信中向社会各界公布了正在推出的三大“防沉迷”举措,严防“冒用成年人账号”等行为,针对家长关心的未成年防沉迷、冒用成年人账号、渠道服充值退款难等问题进行回应。 《蛋仔派对》表示始终把未成年…

多窗口文件管理工具Q-Dir安装以及使用教程

软件介绍 Q-Dir 是一款功能强大的Windows资源管理器,可以非常方便的管理你的各种文件。Q-Dir有4 个窗口,特别适用于频繁在各个目录间跳跃复制粘贴的情况,每个窗口都可以方便的切换目录,以不同颜色区分不同类型的文件,…

分销电商结算设计

概述 分销电商中涉及支付与结算;支付职责是收钱,结算则是出钱给各利益方; 结算核心围绕业务模式涉及哪些费用,以及这些费用什么时候通过什么出资渠道,由谁给到收方利益方; 结算要素组成费用项结算周期出…

持续集成交付CICD:Jenkins配置Nexus制品上传流水线

目录 一、实验 1.Jenkins配置制品上传流水线 二、问题 1.上传制品显示名称有误 一、实验 1.Jenkins配置制品上传流水线 (1) 新建流水线项目 (2)描述 (3)添加参数 (4)查看构建首页 (5&…

体验一下使用 ArkUI 进行 HarmonyOS 开发并与 Compose 简单对比

前言 最近几年各个技术公众号和技术群都在唱衰原生安卓开发,疯狂贩卖焦虑。 搞得我也焦虑的不行,在谷歌的 Compose 推出后就赶紧去学,但是又觉得好像 Compose 的热度也不算太高,又去学 Flutter 。 转头两个都还没学明白呢&…

机器学习入门笔记

文章目录 背景具体步骤1.环境搭建2.写个demo1.数据处理2.分割数据集3.用模型训练数据,并得到预测结果4.绘制结果5.评估 背景 最近学习了一些关于机器学习的内容,做个笔记。 具体步骤 1.环境搭建 需要用到的工具:pycharm,anaco…

YOLOv5目标检测

文章目录 软硬件环境前言安装GPU环境安装pytorch的GPU版本YOLOv5测试v3.0版本参考资料 软硬件环境 ubuntu 18.04 64bitanaconda with 3.7nvidia gtx 1070Ticuda 10.1pytorch 1.5YOLOv5 前言 YOLOv4还没有退热,YOLOv5就已经来了! 6月9日&#xff0c…

【力扣】141和142环形链表

141.环形链表 法一:快慢指针 思路: 用两个指针slow,fast,后者能比前者多走一步路,那判断是不是有环,只需要判断是否会相遇。 就是有一个能比乌龟跑2倍快的兔子,两小只都在有环的路上跑,那是不是肯定会相…

流水号的获取

软件中,常常使用流水号,通常流水号是一组参数的组合,如:评估报告的编号结构: 区编号-机构类型-年份-性别-流水 如:03-01-2023-W-0001 03-01-2023-M-0002 03-01-2023-M-0003 。。。。。。 编程时&#xff0c…

提示msvcp90.dll丢失的解决方法,找不到msvcp90.dll问题全方面分析

今天我想和大家分享的主题是关于在使用软件时遇到的一个问题——msvcp90.dll丢失。相信很多老师在使用电脑时都遇到过这个问题,那么接下来我将从三个方面为大家介绍:msvcp90.dll文件是什么、msvcp90.dll丢失原因以及msvcp90.dll丢失的5个解决方案。 首先…

中科院分区和JCR分区有什么区别

文章目录 名词解释学科划分不同参考的影响因子不同期刊分区不同期刊分区阈值不同 名词解释 中科院分区:又称“中科院JCR分区”,是中国科学院文献情报中心世界科学前沿分析中心的科学研究成果,期刊分区表数据每年底(每年12月中下旬…

windows错误事件 98、41、7000、55、153解决办法

事件错误:98、55、153 疑难解答清单 在系统事件日志中,搜索新技术文件系统 (NTFS) 和磁盘相关的警告和错误。 例如,事件 ID 55、153 或 98。 管理员身份打开CMD,运行命令 chkdsk /scan 并检查结果。 该 chkdsk /scan 命令是只读…

[渗透测试学习] Devvortex - HackTheBox

文章目录 信息搜集解题步骤提交flag 信息搜集 扫描端口 nmap -sV -sC -p- -v --min-rate 1000 10.10.11.242发现80端口有http服务,并且是nginx服务 尝试访问web界面,发现跳转到http://devvortex.htb/无法访问 我们用vim添加该域名即可 sudo vim /etc/…