java生成zip压缩文件,解压缩文件
1.生成zip
public static void main(String[] args) {
try {
// testZip("c:\\temp.txt", "c:\\temp4.zip");
// testZip("c:\\Result.txt", "c:\\temp4.zip"); //不然会被一个文件覆盖了.
//压缩多个文件的关键: ZipOutputStream out 作为参数传递.
//一个流,否则存在覆盖的问题,即每次会new一个,所以外置.
ZipOutputStream zos = null;
zos = new ZipOutputStream(new FileOutputStream("c:\\temp5.zip"));
testZip("c:\\temp.txt",zos);
testZip("c:\\Result.txt",zos);
//外置
zos.closeEntry();
zos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 重复压缩文件
* @param zipEntryName // 去掉String zipEntryName,
* @param filePath
* @param zipPath
* @throws Exception
*/
public static void testZip(String filePath,ZipOutputStream zos) throws Exception{
//压缩包
/*ZipOutputStream zos = null;*/
// BufferedOutputStream bos = null;
// File zipFile = new File(zipPath);
// if(zipFile.exists()==false){
/* zos = new ZipOutputStream(new FileOutputStream(zipPath));*/
// bos = new BufferedOutputStream(zos); //Buffer...
// }else{
//
// }
File f = new File(filePath);
// //create zip
FileInputStream fis = new FileInputStream(f);
// BufferedInputStream bis = new BufferedInputStream(fis);
// set the file name in the .zip file
// zos.putNextEntry(new ZipEntry(zipEntryName));
zos.putNextEntry(new ZipEntry(f.getName()));
// set the declear
zos.setComment("by zip test!");
// byte[] b = new byte[1024];
// while (true) {
// int len = bis.read(b);
// if (len == -1)
// break;
// bos.write(b, 0, len);
// System.out.println(new String(b, 0, len));
// }
// bos.flush(); //这一行重要,否则txt是空白文件.
byte[] buffer = new byte[1024];
int len = 0 ;
// 读取文件的内容,打包到zip文件
while ((len = fis.read(buffer)) > 0) {
zos.write(buffer, 0, len);
}
fis.close();
/*zos.closeEntry();
zos.close();*/
}
2.解压缩
public static void main(String[] args) throws Exception {
// get a zip file instance
File file = new File("c:\\temp5.zip");
// get a ZipFile instance
ZipFile zipFile = new ZipFile(file);
// create a ZipInputStream instance
ZipInputStream zis = new ZipInputStream(new FileInputStream(file));
// create a ZipEntry instance , lay the every file from
// decompress file temporarily
ZipEntry entry = null;
// a circle to get every file
while ((entry = zis.getNextEntry()) != null) {
System.out.println("decompress file :" + entry.getName());
// define the path to set the file
File outFile = new File("c:\\zip\\"
+ entry.getName());
// if the file's parent directory wasn't exits ,than
// create the directory
if (!outFile.getParentFile().exists()) {
outFile.getParentFile().mkdir();
}
// if the file not exits ,than create the file
if (!outFile.exists()) {
outFile.createNewFile();
}
// create an input stream 读文件
BufferedInputStream bis = new BufferedInputStream(
zipFile.getInputStream(entry));
// create an output stream 写文件
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(outFile));
byte[] b = new byte[1024];
while (true) {
int len = bis.read(b);
if (len == -1)
break;
bos.write(b, 0, len);
}
// close stream
bis.close();
bos.close();
}
zis.close();
}
java生成zip压缩文件,解压缩文件的更多相关文章
- java.util.zip压缩打包文件总结一:压缩文件及文件下面的文件夹
一.简述 zip用于压缩和解压文件.使用到的类有:ZipEntry ZipOutputStream 二.具体实现代码 package com.joyplus.test; import java.io ...
- PHP生成ZIP压缩文件
PHP生成ZIP压缩文件 /* * 生成zip压缩文件 * $sourceDir:被压缩的文件夹或文件 * $outFileName:输出的压缩文件名称 * */ function createZip ...
- Java 的zip压缩和解压缩
Java 的zip压缩和解压缩 好久没有来这写东西了,今天中秋节,有个东西想拿出来分享,一来是工作中遇到的问题,一来是和csdn问候一下,下面就分享一个Java中的zip压缩技术,代码实现比较简单,代 ...
- java直接生成zip压缩文件精简代码(跳过txt文件)
/** * @param args */ public static void main(String[] args) throws Exception{ ZipOutputStream zos = ...
- Java操作zip压缩和解压缩文件工具类
需要用到ant.jar(这里使用的是ant-1.6.5.jar) import java.io.File; import java.io.FileInputStream; import java.io ...
- java.util.zip压缩打包文件总结二: ZIP解压技术
一.简述 解压技术和压缩技术正好相反,解压技术要用到的类:由ZipInputStream通过read方法对数据解压,同时需要通过CheckedInputStream设置冗余校验码,如: Checked ...
- C#压缩、解压缩文件(夹)(rar、zip)
主要是使用Rar.exe压缩解压文件(夹)(*.rar),另外还有使用SevenZipSharp.dll.zLib1.dll.7z.dll压缩解压文件(夹)(*.zip).需要注意的几点如下: 1.注 ...
- Linux命令(十六) 压缩或解压缩文件和目录 zip unzip
目录 1.命令简介 2.常用参数介绍 3.实例 4.直达底部 命令简介 zip 是 Linux 系统下广泛使用的压缩程序,文件压缩后扩展名为 ".zip". zip 命令用来将文件 ...
- php生成zip压缩文件的方法,支持文件和压缩包路径查找
/* * new creatZip($_dir,$_zipName); *@ _dir是被压缩的文件夹名称,可使用路径,例 'a'或者'a/test.txt'或者'test.txt' *@ _zipN ...
随机推荐
- 线段树及Lazy-Tag
一:线段树 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点.使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(lo ...
- Java 构造器 考虑用静态构造方法代替构造器
类可以提供一个公有的静态工厂方法,它是一个返回类的实例的静态方法.静态工厂方法与设计模式中的工厂方法模式不同. 优势: 静态工厂方法与构造器不同的第一大优势在于,它们有名称.一个类只能有一个带有指定签 ...
- 线段树模板hdu 1754:I Hate It
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- sql 2008 查询性能优化笔记
索引: set statistics io on select p.productID,p.name,p.Weight,p.StandardCost from production.product p ...
- pygame-KidsCanCode系列jumpy-part4-弹跳
终于要到弹跳环节了,向上弹跳其实很简单,按下空格触发时,只要把y轴速度给一个向上的速度即可. Player类,新加一个jump()方法: def jump(self): self.vel.y = -2 ...
- 咏南ISAPI中间件
咏南ISAPI中间件 只支持WINDOWS服务器部署,中间件作为IIS的ISAPI插件部署. 基于WINDOWS的IIS,使用HTTP.SYS通讯,不依赖任何三方控件. 可以基于IIS HTTPS. ...
- jQuery Distpicker插件 省市区三级联动 动态赋值修改地址
在获取创建页面数据后需要在编辑页面调取之前提交的数据,在使用这个插件后发现无法动态赋值,查找资料后发现需要先销毁实例,$(’#target’).distpicker(‘destroy’); 第一步 引 ...
- 821. 字符的最短距离 c++实现方法
1.题目描述 给定一个字符串 S 和一个字符 C.返回一个代表字符串 S 中每个字符到字符串 S 中的字符 C 的最短距离的数组. 示例 1: 输入: S = "loveleetcode&q ...
- Gradle初识
一.安装配置 gradle官方网站https://gradle.org/,下载下来是一个压缩包,解压到合适的目录即可,然后配置环境变量(GRADLE_HOME,Path),略去. 二.IDEA配置 N ...
- javaweb中使用百度、谷歌地图进行定位
第一种 百度 直接上代码: <!DOCTYPE> <html> <head> <meta name="viewport" content ...