在java.util.zip包中,定义了多种类型用于创建和读取zip压缩格式的文件,主要有ZipEntry,ZipInputStream,ZipOutputStream三个类。
java包中还有一个ZipFile类,利用它可以从压缩格式文件中读取原始文件的入口,即在解压缩zip文件时会用到
package zip;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;
//zip是windows平台下常用的压缩文件,gzip是unix平台下常用的
public class ZipSample {
private final int BUFFER_SIZE = 1024;
public static void main(String[] args) {
File zip = new File("c:\\test.zip");
File[] files = new File[3];
files[0] = new File("D:\\holen.xml");
files[1] = new File("D:\\holen2.xml");
files[2] = new File("D:\\downloads\\XPath.chm");
ZipSample sample = new ZipSample();
sample.zip(zip, files); // 将files打包至zip文件
File zipFile = new File("c:\\test.zip");
sample.readZipFile(zipFile); // 读取zip文件
}
public void zip(File zipFile, File[] zippedFiles) { // 将zippedFiles打包到zipFile的zip文件即压缩文件
try {
byte[] buffer = new byte[BUFFER_SIZE];
FileOutputStream fs = new FileOutputStream(zipFile);
ZipOutputStream zo = new ZipOutputStream(fs);
for (int i = 0; i < zippedFiles.length; i++) {
if (zippedFiles[i] == null || !zippedFiles[i].exists()
|| zippedFiles[i].isDirectory())
continue;
// 添加每个原始文件的入口
ZipEntry zipAdd = new ZipEntry(zippedFiles[i].getName());// zipEntry标示压缩文件中每一个原始文件的入口,具有唯一的名称
zipAdd.setTime(zippedFiles[i].lastModified());
zo.putNextEntry(zipAdd);
FileInputStream in = new FileInputStream(zippedFiles[i]);
while (true) {
int nRead = in.read(buffer, 0, buffer.length); // 读取的字节数
if (nRead <= 0) {
break;
}
zo.write(buffer, 0, nRead);
}
in.close();
}
zo.close();
fs.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void readZipFile(File file) { // 解压缩,用ZipFile类
try {
// 获取压缩文件中每一个原始文件的入口
ZipFile zf = new ZipFile(file);
Enumeration entries = zf.entries();
// 从控制台获取用户输入
BufferedReader input = new BufferedReader(new InputStreamReader(
System.in));
while (entries.hasMoreElements()) {
ZipEntry ze = (ZipEntry) entries.nextElement();
System.out.println("Read " + ze.getName() + "?");
String inputLine = input.readLine();
if (inputLine.equalsIgnoreCase("y")) {
long size = ze.getSize();
if (size > 0) {
// 解压输出指定的原始文件
BufferedReader br = new BufferedReader(
new InputStreamReader(zf.getInputStream(ze)));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
}
} // if "y"
}// while
} catch (ZipException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
该程序执行后会在c盘下生产出一个test.zip文件
分享到:
相关推荐
// 设置压缩文件入口entry,为被读取的文件创建压缩条目 File tempFile = new File(fileArray[i].toString()); String rootStr = file.getPath(); String entryStr = null; // entry以相对路径的...
用开源的FileUpload组件,可以很方便的给自己的系统添加功能强大的文件上传模块。 该资源文件是两个jar打包成的压缩文件。
Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...
Java操作zip压缩格式的开源项目,功能强大而且使用方便,能完全满足Java操作Zip压缩文件,官方网址为:http://www.lingala.net/zip4j/ 可以下载到jar包、源码和示例,好像没有提供API文档。 不过需要使用代理访问...
这是Java中文件处理的完整指南。...从Java中的ZIP文件解压缩文件 目录 目录操作示例列表。 获取当前工作目录 建立目录 删除目录 复制目录 遍历/列出目录结构 检查目录是否为空 文件实用程序 Java F
java jar包,亲测试可用 ...把一个JAR文件添加到系统的classpath环境变量之后,java通常会把这个JAR文件当做一个路径来处理。通常使用jar命令来压缩,可以把一个或多个路径全部压缩成一个JAR文件。
使用这两个压缩文件中的Jar可以方便的上传文件到服务器上。 可以查看http://blog.csdn.net/cw_hello1/article/details/51444102网页
java jar包,亲测试可用 ...把一个JAR文件添加到系统的classpath环境变量之后,java通常会把这个JAR文件当做一个路径来处理。通常使用jar命令来压缩,可以把一个或多个路径全部压缩成一个JAR文件。
io/nio各种文件读写方法。文件压缩成jar包。
本文件为一个MyEclipse工具开发的java web 工程压缩文件。本工程用于演示如何使用servlet和commons-fileupload-1.2.1.jar和commons-io-2.4.jar两个jar包实现文件上传的功能。
NULL 博文链接:https://beijishiqidu.iteye.com/blog/1944225
java流IO超详细使用,包含:怎么理解流,输出输入流,6个重要的方法,架构体系,分类,java做压缩程序的代码等等。。。。
java jar包,亲测试可用 ...把一个JAR文件添加到系统的classpath环境变量之后,java通常会把这个JAR文件当做一个路径来处理。通常使用jar命令来压缩,可以把一个或多个路径全部压缩成一个JAR文件。
Java实现压缩与解压缩ZIP import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream;...
摘要视图订阅分类:java_web学习第四天(request和response的学习)Java输入输出流java压缩多个文件并且返回流示例Java中IO流文件读
java控制指定路径下的文件夹压缩成zip格式。 java将zip压缩包解压成为文件夹。直接使用io流进行操作,不需借助其他jar包
java 解压缩目录下的所有文件 需要用的ant.jar 可以解决中文乱码问题
基于GUI用IO流中的ZipOutputStream ,ZipInputStream实现文件的解压与压缩, 如文件解压函数如下 private void unZip(String zipFileName, String outputDirectory)throws Exception { InputStream in=null; ...
Java试下制定文件的复制,压缩功能,类中方法有制定文件的复制,及对制定文件下所有文件的制定位置压缩,生成压缩zip文件
java 获取文件的真实类型(不是根据文件的后缀名称判断类型) commons-io-2.6.jar commons-lang-2.6.jar