java流与文件——ZIP文档

【0】README

0.1) 本文描述转自 core java volume 2, 旨在理解 java流与文件——ZIP文档 的相关知识;
0.2) for source code, please visit https://github.com/pacosonTang/core-java-volume/blob/master/coreJavaAdvanced/chapter1/ZipTest.java


【1】ZipInputStream + ZipOutputStream:

1.1)ZipInputStream: 读入 zip 文件(zip文件 == ZipEntry)
1.2)ZipOutputStream: 写出到 zip 文件;


【2】下面是典型的通读ZIP文件的代码序列:

ZipInputStream zis = new ZipInputStream(new FileInputStream(zipname));
ZipEntry zipEntry;
while((entry = zip.getNextEntry()) != null)
{......zin.closeEntry();
}
zin.close();

2.1 )当希望读入某个 zip 项的内容时, 我们可能并不想使用原生的read 方法, 通常,我们将使用某个更能胜任的流过滤器方法:

Scanner in = new Scanner(zis);
while(in.hasNextLine())do sth with in.nextLine();
  • Warning) 在读入单个ZIP 项之后后,不要关闭ZIP输入流, 也不要将 其传递给 可能会关闭它的方法, 否则, 你就不能再读入后序的项了;

这里写图片描述
这里写图片描述

2.2) 要写出到ZIP文件, 使用 ZipOutputStream, 对于你希望放入到 ZIP 文件中的每一项, 都应该创建一个 ZipEntry 对象, 并将文件名传递给 ZipEntry的构造器, 它将设置其他诸如文件日期和解压缩方法等参数;
2.3)如果需要:

  • step1)覆盖这些设置;
  • step2)需要调用 ZipOutputStream 的 putNextEntry 方法来开始写出新文件, 并将文件数据发送到 ZIP流中;
  • step3)当完成时, 需要调用 closeEntry;然后你需要对所有你希望存储的文件都重复这个过程, 如以下代码:
FileOutputStream fos = new  FileOutputStream("test.zip");
ZipOutputStream zos = new ZipOutputStream(fos);
for all files
{ZipEntry ze = new ZipEntry(filename);zos.putNextEntry(ze);...zout.closeEntry();
}
zout.close();

这里写图片描述
Attention)

  • A1) JAR 文件 只是带有一个特殊项的ZIP文件, 这个项称为清单;
  • A2)可以使用 JarInputStream 和 JarOutputStream 类来读写清单项;
  • A3) ZIP 流是一个能够展示流的抽象化的强大之处的实例。 当你读入以压缩格式存储的数据时,不必担心边请求边解压数据的问题, 而且ZIP 格式的字节源并非必须是文件, 也可以是来自网络连接的 ZIP 数据;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单片机与gsm通信c语言,gsm模块如何与单片机通信?

51单片机与GSM模块实现通信1、检测串口线的好坏1)将串口线插在电脑上,用短路子短接串口的2脚和3脚2)打开串口调试助手3)点击自动发送,在自动发送的窗口中随便发个数据,看看能不能接收到若能接收到自己发的数据表示串口线是正常的,…

aws terraform_在AWS第1部分中使用Terraform自动缩放组:基本步骤

aws terraform因此,您想使用Terraform在AWS上创建一个自动缩放组。 以下是达到此目的的最少步骤。 在编写实际代码之前,应指定aws terraform提供程序以及provider.tf文件上的区域。 provider "aws" { version "~> 2.0" region …

java流与文件——java生成解压缩文件(夹)

【0】README 0.1) 本文描述转自 http://blog.csdn.net/chenssy/article/details/9622171 , 旨在理解 java流与文件——java生成解压缩文件(夹) 的相关知识; 0.2) for my diy source code, please visit h…

Java的系统Property

一、java 系统Properties修改 (1)System.getProperties()可以确定当前的系统属性,返回值是一个Properties; (2)System.load(String filename)加载文件中的属性Properties等同于:System.getProperties().load(String filename) (3)System.setProperties(Properties p…

android 发布最新系统更新包,安卓升级包(安卓补丁包更新)

安卓升级包(安卓补丁包更新)2021-02-08 15:39“固件升级”文石BOOX Android 6.0及以上型号都支持升级最新系统!好消息!截至今天,您在BOOX安卓6.0系统以上的所有阅读器型号,都支持升级到最新BOOX OS 2.3.1系统了!?的设…

apache.camel_Apache Camel 3.1 –更多骆驼核心优化(第3部分)

apache.camel我以前曾在博客中介绍过我们在下一个Camel 3.1版本中所做的优化 博客第1部分 博客第2部分 今天,我想简要介绍一下我们已经完成的最新开发,因为我们准备在本周末或下半年准备好构建和发布Camel 3.1。 从第2部分开始,我们设法在…

AVL树的单双旋转解析

【0】README 0.0) 本文部分idea 转自:http://blog.csdn.net/collonn/article/details/20128205 0.1) 本文专注于 解析 AVL 树的 单旋转(左左单旋转和右右单旋转) 和 双旋转(左右双旋转和右左单旋转&#…

List转数组toArray方法

一、List.toArray方法 List提供了一个将List转为数组的一个非常方便的方法toArray。toArray有两个重载的方法&#xff1a; Object[]toArray() 返回按适当顺序包含列表中的所有元素的数组&#xff08;从第一个元素到最后一个元素&#xff09;。<T> T[]toArray(T…

android定位会出现的问题,android – 使用GPS_PROVIDER进行定位时出现问题

使用&#xff1a;locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,MINIMUM_TIME_BETWEEN_UPDATES,MINIMUM_DISTANCE_CHANGE_FOR_UPDATES, locationListener);对于locationListener,您可以使用&#xff1a;LocationListener locationListener new Locati…

自底向上伸展树(之字形旋转+一字形旋转)

【0】README 0.1&#xff09; 本文总结于 数据结构与算法分析&#xff0c;核心剖析路线为原创&#xff0c; 旨在理清 自底向上伸展树&#xff08;之字形旋转一字形旋转&#xff09; 的基本思路&#xff1b; 0.2&#xff09; 自底向上伸展树 是基于 AVL树&#xff0c;for deta…

apache.camel_Apache Camel 3.1 –更多骆驼核心优化(第2部分)

apache.camel我以前曾在博客中介绍我们在下一个Camel 3.1版本&#xff08;第1部分&#xff09;中所做的优化 。 今天&#xff0c;我想发布大约4周后的状态更新。 我们集中在三个方面优化骆驼核心&#xff1a; 不必要的对象分配 不必要的方法调用 提高绩效 换句话说&#…

Util包中Arrays

java.util 类 Arrays java.lang.Object -java.util.Arrayspublic class Arrays extends Object此类包含用来操作数组&#xff08;比如排序和搜索&#xff09;的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。 除非特别注明&#xff0c;否则如果指定数组引用为 …

Android的sqlite使用外部,Android 使用外部已经建立好的sqlite数据库

最近项目需要通过电话号码查询归属地&#xff0c;决定直接在本地sqlite的数据库进行查询&#xff0c;没必要去访问网络(虽然最后还是决定还是将数据库放在服务器上)一 首先先将外部的sqlite数据库放入assets文件夹下面注意&#xff1a;必须是sqlite数据库(XXX.db)&#xff0c;如…

java流与文件——操作文件

【0】README 0.1&#xff09; 本文描述转自 core java volume 2&#xff0c; 旨在理解 java流与文件——操作文件 的相关知识&#xff1b; 0.2&#xff09; for source code, please visit https://github.com/pacosonTang/core-java-volume/blob/master/coreJavaAdvanced/ch…

阅读副本和Spring Data第2部分:配置基础项目

在上一篇文章中&#xff0c;我们使用相同的数据设置了多个PostgreSQL实例。 下一步将是使用这两个服务器来配置spring项目。 如前所述&#xff0c;由于我们使用完全相同的数据库&#xff0c;因此我们将使用Spring Boot JPA帖子中的一些代码。 这将是我们的gradle构建文件 pl…

java生成UUID通用唯一识别码

一、UUID概述UUID含义是通用唯一识别码 (Universally Unique Identifier)&#xff0c;这是一个软件建构的标准&#xff0c;也是被开源软件基金会 (Open Software Foundation, OSF) 的组织在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部份。 UUID 的目…

android 项目部署,Android发布项目到JCenter

JCenter是什么大家应该都用过各种各样的Github上的第三方开源组件。类似这种效果的compile wang.yuchao.demoforjcenterlibrary:DemoForJCenterLibraryModel:1.2.5我们会比较好奇Android Studio 是从哪里得到这个类库的&#xff1f;Android Studio是从build.gradle里面定义的Ma…

java流与文件——对象流和序列化

【0】README 0.1&#xff09; 本文描述转自 core java volume 2&#xff0c; 旨在理解 java流与文件——对象流和序列化 的相关知识&#xff1b; 0.2&#xff09; for source code , please visit https://github.com/pacosonTang/core-java-volume/blob/master/coreJavaAdva…

maven 版本号插件_测试Maven版本插件自动递增版本号

maven 版本号插件抽象 Maven版本插件是一个非常强大的工具&#xff0c;我在很大程度上依赖于它来协调软件版本。 通常&#xff0c;软件发行版本号遵循简单的1.0.0.0-SNAPSHOT格式。 但是最近我需要在版本号中添加一个限定符&#xff0c;例如1.0-beta-SNAPSHOT或1.0.0-fix-bug-d…

java中Date

在类 Date 所有可以接受或返回年、月、日期、小时、分钟和秒值的方法中&#xff0c;将使用下面的表示形式&#xff1a;年份 y 由整数 y - 1900 表示。月份由从 0 至 11 的整数表示&#xff1b;0 是一月、1 是二月等等&#xff1b;因此 11 是十二月。日期&#xff08;一月中的某…