java压缩
/* @description:压缩文件操作
* @param filePath 要压缩的文件路径
* @param descDir 压缩文件保存的路径 d:\\aaa.zip
*/
public static void zipFiles(String filePath, String descDir)
{
ZipOutputStream zos = null;
System.out.println("******************ZipOutputStream********************");
try
{
// 创建一个Zip输出流
zos = new ZipOutputStream(new FileOutputStream(descDir));
// 启动压缩
startZip(zos, "", filePath); System.out.println("******************压缩完毕********************");
}
catch (IOException e)
{
// 压缩失败,则删除创建的文件
File zipFile = new File(descDir); if (zipFile.exists())
{
zipFile.delete();
}
System.out.println("******************压缩失败********************"); e.printStackTrace();
}
finally
{
try
{
if (zos != null)
{
zos.close();
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
} /*
*
* @description:对目录中所有文件递归遍历进行压缩
* @param zos ZIP压缩输出流
* @param oppositePath 在zip文件中的相对路径
* @param directory 要压缩的文件的路径
* @throws IOException
*/
private static void startZip(ZipOutputStream zos, String oppositePath,
String directory) throws IOException
{
File file = new File(directory); if (file.isDirectory())
{
// 如果是压缩目录
File[] files = file.listFiles(); for (int i = ; i < files.length; i++)
{
File aFile = files[i]; if (aFile.isDirectory())
{
// 如果是目录,修改相对地址
String newOppositePath = oppositePath + aFile.getName() + "/";
// 压缩目录,这是关键,创建一个目录的条目时,需要在目录名后面加多一个"/"
ZipEntry entry = new ZipEntry(oppositePath + aFile.getName() + "/"); zos.putNextEntry(entry); zos.closeEntry();
// 进行递归调用
startZip(zos, newOppositePath, aFile.getPath());
}
else
{
// 如果不是目录,则进行压缩
zipFile(zos, oppositePath, aFile);
}
}
}
else
{
// 如果是压缩文件,直接调用压缩方法进行压缩
zipFile(zos, oppositePath, file);
}
} /**
*
* @description:压缩单个文件到目录中
* @param zos zip输出流
* @param oppositePath 在zip文件中的相对路径
* @param file 要压缩的的文件
*/
private static void zipFile(ZipOutputStream zos, String oppositePath,File file)
{
// 创建一个Zip条目,每个Zip条目都是必须相对于根路径
InputStream is = null; try
{
ZipEntry entry = new ZipEntry(oppositePath + file.getName());
// 将条目保存到Zip压缩文件当中
zos.putNextEntry(entry);
// 从文件输入流当中读取数据,并将数据写到输出流当中.
is = new FileInputStream(file); int length = ; int bufferSize = ; byte[] buffer = new byte[bufferSize]; while ((length = is.read(buffer, , bufferSize)) >= )
{
zos.write(buffer, , length);
}
zos.closeEntry();
}
catch (IOException ex)
{
ex.printStackTrace();
}
finally
{
try
{
if (is != null)
{
is.close();
}
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
}
java压缩的更多相关文章
- java压缩指定目录下的所有文件和文件夹的代码
将代码过程较好的代码段备份一下,下边资料是关于java压缩指定目录下的所有文件和文件夹的代码,希望对码农有帮助. String sourceDir="E:\test";int pa ...
- java压缩文件或文件夹并导出
java压缩文件或文件夹并导出 tozipUtil: package com.zhl.push.Utils; import java.io.File; import java.io.FileInput ...
- java压缩流
java压缩流是为了减少传输时的数据量,可以将文件压缩成ZIP.JAR.GZIP等文件格式.
- Java压缩/解压.zip、.tar.gz、.tar.bz2(支持中文)
本文介绍Java压缩/解压.zip..tar.gz..tar.bz2的方式. 对于zip文件:使用java.util.zip.ZipEntry 和 java.util.zip.ZipFile,通过设置 ...
- java压缩 GZIP进行简单压缩,ZIP进行多文件保存
java压缩 GZIP进行简单压缩,ZIP进行多文件保存 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGlhbmdydWkxOTg4/font/5a6 ...
- Java压缩技术(二) ZIP压缩——Java原生实现
原文:http://snowolf.iteye.com/blog/642298 去年整理了一篇ZLib算法Java实现(Java压缩技术(一) ZLib),一直惦记却没时间补充.今天得空,整理一下ZI ...
- Java压缩和解压缩文件工具
Java压缩和解压缩文件工具 学习了: https://www.oschina.net/code/snippet_1021818_48130 http://blog.csdn.net/gaowen_h ...
- Java 压缩/ 解压 .Z 文件
1.问题描述 公司项目有需要用 JAVA 解压 .z文件. .z 是 unix 系统常见的压缩文件. 2.源码 import com.chilkatsoft.CkUnixCompress; impor ...
- 原生java 压缩解压zip文件
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import ...
- Java 压缩字符串
1.引言 最近在做项目中,平台提供一个http服务给其他系统调用,然后我接收到其他系统的json格式的报文后去解析,然后用拿到的数据去调用corba服务,我再把corba的返回值封装完成json字符串 ...
随机推荐
- PHP 函数整理 (用过的)
1:$_SERVER['DOCUMENT_ROOT'] $_SERVER['DOCUMENT_ROOT']是PHP预定义的几个变量之一.作用是:获取当前运行脚本所在的文档根目录.该根目录是由服务器配置 ...
- [MongoDB]增删改查
摘要 上篇文章学习了mongodb在windows上的安装,以及如何开启mongodb,最后列举了简单的增删改查操作.本篇将继续深入学习一下增删改查. 相关文章 [MongoDB]入门操作 CRUD ...
- localdomain的linux域
both和and的区别? both强调(两者)都,用于肯定语气, and字面意思是"和,而且",是用于表示并列关系的句子,通常位于最后两个人或物之间,将将人物串联起来 如: thi ...
- shell学习之路:流程控制(for)
for循环的语法: 1. for 变量 in 值1 值2 值3.... do 程序 done 例如:下列脚本会分别打印4次 分别是morning noon afternoon evening的值 # ...
- Linux下的一个图形管理工具webmin
这个工具其实我在两年前的小白时期还是经常用的,因为那时候对Linux比较陌生在为数server的时候帮了我很多工作,现在周末外面下雨,闲来无事莫名其妙的想起他来. 工具优点:最大特点是他是脚本安装 不 ...
- php简单实用的操作文件工具类(创建、移动、复制、删除)
php简单实用好用的文件及文件夹复制函数和工具类(创建.移动.复制.删除) function recurse_copy($src,$dst) { // 原目录,复制到的目录 $dir = opend ...
- git SSH keys
An SSH key allows you to establish a secure connection between your computer and GitLab. Before gene ...
- jQuery源码-dom操作之jQuery.fn.html
写在前面 前面陆陆续续写了jQuery源码的一些分析,尽可能地想要cover里面的源码细节,结果导致进度有些缓慢.jQuery的源码本来就比较晦涩,里面还有很多为了解决兼容问题很引入的神代码,如果不g ...
- matplotlib basic and boxplot
============================================matplotlib 绘图基础========================================= ...
- IE打开报错,提示该内存不能为read的解决办法!
由于最近我遇到过一次浏览器打不开的情况,出错的错误提示为 浏览器错误:“0x5ddfddac”指令引用的“0x00000020”内存,该内存不能为read经过杀毒及IE修复均不能解决!(没试过360急 ...