I/O流、ZIP文档
1) ZIP文档通常以压缩格式存储一个或多个文档。在Java中可以用ZipInputStream读入ZIP文档(即解压文件流),用ZipOutputStream写入ZIP文档(即压缩文件流),无论解压或者压缩都需要创建ZipEntry对象(因为ZipEntry对象是流中必须要用的文件项)。压缩时创建ZipEntry对象,需要传入文件名;解压时创建ZipEntry对象可以调用该对象的getName()获取文件名称,每次ZipEntry项使用完之后需要调用closeEntry(),以便调用getNextEntry()或者putNextEntry()获得下个ZipEntry对象。最后无论解压亦或者是压缩整个过程操作完之后记得调用close关闭流释放资源。ZipInputStream和ZipOutputStream属于java.util.zip包中。
如果压缩的文件是有多级目录的,且解压时需要按照多级目录的要求解压,那么需要先手动创建多级目录,然后在解压文件,否则会报异常(找不到指定的系统路径)
下面是一个压缩和解压的例子
/**
* 同级文件压缩
*/
public static void zipCompression() { try {
// 文件的根路径
String fileRootPath = "G:\\"; // 已有的两个文件
String[] files = { "1.txt", "2.txt" }; // 创建一个zip文件
File file = Paths.get(fileRootPath, "test.zip").toFile(); // 创建ZipOutputStream 对象
ZipOutputStream zipOutputStream = new ZipOutputStream(
new FileOutputStream(file)); // 多个文件, 同级文件压缩
for (String fileName : files) { ZipEntry zipEntry = new ZipEntry(fileName);
zipOutputStream.putNextEntry(zipEntry); // 读文件
String filePath = fileRootPath + fileName;
FileInputStream fileInputStream = new FileInputStream(filePath);
byte[] b = new byte[1024];
int size = 0;
// 写入压缩文件
while ((size = fileInputStream.read(b)) != -1) {
zipOutputStream.write(b, 0, size);
}
// 关闭 ZipEntry对象
zipOutputStream.closeEntry();
// 关闭文件流
fileInputStream.close();
}
// 关闭ZIP 流
zipOutputStream.close(); } catch (Exception exception) { }
}
/**
* 同级文件解压
*/
public static void zipDecompression() {
try {
String fileZipName = "G:\\test.zip"; // 创建ZipInputStream 对象
FileInputStream fileInputStream = new FileInputStream(fileZipName);
ZipInputStream zipInputStream = new ZipInputStream(fileInputStream);
ZipEntry zipEntry = null; // 得到ZipEntry项,创建一个文件,将内容写入文件
while ((zipEntry = zipInputStream.getNextEntry()) != null) {
String newFileName = "G:\\" + zipEntry.getName();
FileOutputStream fileOutputStream = new FileOutputStream(
newFileName);
byte[] b = new byte[1024];
int size = 0;
while ((size = zipInputStream.read(b)) != -1) {
fileOutputStream.write(b, 0, size);
} // 关闭文件流
fileOutputStream.close(); // 关闭当前ZipEntry项 调用getNextEntry() 获取下一个ZipEntry项
zipInputStream.closeEntry();
}
zipInputStream.close(); } catch (Exception exception) { } }
I/O流、ZIP文档的更多相关文章
- IO流-ZIP文档
java中通常使用ZipInputStream来读ZIP文档 ZIP文档(通常)以压缩格式存储了一个或多个文件,每个ZIP文档都有一个包含诸如文件 名字和所使用的压缩方法等信息的头.在Java中,可以 ...
- 笔记:I/O流-ZIP文档
ZIP文档以压缩格式存储了一个或多个文件,每个ZIP文档都有一个头,包含诸如每个文件名字和所使用的压缩方法等信息,在 Java 中可以使用 ZipInputStream 来读入ZIP 文档,getNe ...
- 【.NET深呼吸】Zip文件操作(2):动态生成Zip文档
通过前面一篇烂文的介绍,大伙儿知道,ZipArchive类表示一个zip文档实例,除了用上一篇文章中所列的方法来读写zip文件外,还可以直接通过ZipArchive类,动态生成zip文件. 文件流操作 ...
- 【.NET深呼吸】Zip文件操作(1):创建和读取zip文档
.net的IO操作支持对zip文件的创建.读写和更新.使用起来也比较简单,.net的一向作风,东西都准备好了,至于如何使用,请看着办. 要对zip文件进行操作,主要用到以下三个类: 1.ZipFile ...
- HTML+CSS基础 块级元素div分析 文档流 脱离文档流的方法
块级元素div分析 1.外边距 margin 2.内边距 padding 3.边框 border Div的真实宽度=width+margin-left+margin-right+border*2+ ...
- JAVA如何解压缩ZIP文档
代码片段: package org.yu.units; import java.io.Closeable; import java.io.File; import java.io.FileInputS ...
- 文档流 css中间float clear和布局
文档流 先说说什么是公文流转 什么流 它是一系列连续的东西 <div style="background-color:pink;width:40px;height:80px;&quo ...
- 文档流 css中的float clear与布局
文档流 先说说什么是文档流 流是什么 就是一串连续的东西 <div style="background-color:pink;width:40px;height:80px;" ...
- WPF中使用流文档
转载自:http://www.cnblogs.com/zlgcool/archive/2008/11/17/1335456.html WPF面向的是UI展现,而文本显示无疑是UI层中的重要功能之一.W ...
随机推荐
- 刚在虚拟机上装的Linux系统,ifconfig后IP地址怎么成了127.0.0.1了
之前在虚拟机上装了Linux系统,用了一段时间后想删除了重新装一下,然而装完以后ifconfig后,出现的是 [root@localhost ~]# ifconfig lo Link encap:Lo ...
- Jenkins新建节点,启动方式没有“通过Java Web启动代理”选项怎么办?
在Jenkins中,打开“系统管理”→“管理节点”→“新建节点”页面时,“启动方式”选项没有“通过Java Web启动代理”,怎么办? 打开“系统管理”,进入“全局安全配置”页面. 1. “JNLP代 ...
- 微软技术大会直播倒计时7天 | 地球上的IT咖们,正在慢慢向北京聚集
去年,一句歌词火了:“我在北方的寒夜里,四季如春.”足以见得,北京的冬天,是可以把人冻蒙圈儿的. 然而有一群人,却正在慢慢靠近这样寒冷的北京,7 天后,他们将齐聚在北京. 他们来这里干什么?又是来见谁 ...
- mybatis开发dao的方式
mybatis基于传统dao的开发方式 第一步:开发接口 public interface UserDao { public User getUserById(int id) throws Excep ...
- 【Python自然语言处理】第一章学习笔记——搜索文本、计数统计和字符串链表
这本书主要是基于Python和一个自然语言工具包(Natural Language Toolkit, NLTK)的开源库进行讲解 NLTK 介绍:NLTK是一个构建Python程序以处理人类语言数据的 ...
- day2-基础 变量,判断,循环
1.第一个程序 print ("Hello World!") 输出: 1 Hello World 2.第一个变量 a = ( print (a) 输出: Hello World 3 ...
- (EXPDP) Fails With Errors ORA-39079 ORA-25306 On One Node In RAC Environment
分类: Oracle DataPump export on one certain RAC instance fails with errors: ORA-39006: internal errorO ...
- Template Pattern & Strategy Pattern
详细见<C++设计模式 23种设计模式.pdf 55页> 在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算 ...
- NO.009-2018.02.14《临江仙·送钱穆父》宋代:苏轼
临江仙·送钱穆父_古诗文网 临江仙·送钱穆父 宋代:苏轼 一别都门三改火,天涯踏尽红尘.依然一笑作春温.无波真古井,有节是秋筠.自从我们在京城分别一晃又三年,远涉天涯你奔走辗转在人间.相逢一笑时依然像 ...
- libxml2用xpath进行查找
xml文档 <?xml version="1.0" encoding="UTF-8"?> <radios> <radio> ...