/* @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压缩的更多相关文章

  1. java压缩指定目录下的所有文件和文件夹的代码

    将代码过程较好的代码段备份一下,下边资料是关于java压缩指定目录下的所有文件和文件夹的代码,希望对码农有帮助. String sourceDir="E:\test";int pa ...

  2. java压缩文件或文件夹并导出

    java压缩文件或文件夹并导出 tozipUtil: package com.zhl.push.Utils; import java.io.File; import java.io.FileInput ...

  3. java压缩流

    java压缩流是为了减少传输时的数据量,可以将文件压缩成ZIP.JAR.GZIP等文件格式.

  4. Java压缩/解压.zip、.tar.gz、.tar.bz2(支持中文)

    本文介绍Java压缩/解压.zip..tar.gz..tar.bz2的方式. 对于zip文件:使用java.util.zip.ZipEntry 和 java.util.zip.ZipFile,通过设置 ...

  5. java压缩 GZIP进行简单压缩,ZIP进行多文件保存

    java压缩  GZIP进行简单压缩,ZIP进行多文件保存 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGlhbmdydWkxOTg4/font/5a6 ...

  6. Java压缩技术(二) ZIP压缩——Java原生实现

    原文:http://snowolf.iteye.com/blog/642298 去年整理了一篇ZLib算法Java实现(Java压缩技术(一) ZLib),一直惦记却没时间补充.今天得空,整理一下ZI ...

  7. Java压缩和解压缩文件工具

    Java压缩和解压缩文件工具 学习了: https://www.oschina.net/code/snippet_1021818_48130 http://blog.csdn.net/gaowen_h ...

  8. Java 压缩/ 解压 .Z 文件

    1.问题描述 公司项目有需要用 JAVA 解压 .z文件. .z 是 unix 系统常见的压缩文件. 2.源码 import com.chilkatsoft.CkUnixCompress; impor ...

  9. 原生java 压缩解压zip文件

    import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import ...

  10. Java 压缩字符串

    1.引言 最近在做项目中,平台提供一个http服务给其他系统调用,然后我接收到其他系统的json格式的报文后去解析,然后用拿到的数据去调用corba服务,我再把corba的返回值封装完成json字符串 ...

随机推荐

  1. HTML5+学习笔记2-------边看代码边研究貌似还是有点问题...还在研究中api中

    // 拍照 function getImage() { outSet( "开始拍照:" ); var cmr = plus.camera.getCamera(); cmr.capt ...

  2. 用jinja做了个E-Letter小项目

    做了一个html E-Letter项目. 邮件模板采用jinja2, html 邮件内容生成简直太爽了. 整个项目开发只用了2个小时, 调试却花了大半天时间, 生成的邮件总是发不出去. 于是, 打开 ...

  3. 郝斌C语言代码

    #include<stdio.h> int main() { ; printf("%#x\n",a); ; } /* output 0xf; */ //(15)10= ...

  4. php面向对象面试题

    php面试题之四--PHP面向对象(基础部分) 四.PHP面向对象 1. 写出 php 的 public.protected.private 三种访问控制模式的区别(新浪网技术部) public:公有 ...

  5. php字符串格式化函数addslashes()

    1.这个函数的使用和php.ini中的magic_quotes_gpc的配置有关,默认情况下,这个配置为on.并且,这个配置处于一个较高级别,脚本中不能修改.所以,检测这个配置情况就很重要. 2.在脚 ...

  6. SpringBoot使用的心得记录

    security配置 import com.yineng.corpsysland.security.*; import com.yineng.corpsysland.web.filter.Author ...

  7. Effective Java 读书笔记之四 泛型

    泛型的本质是参数化类型.只对编译器有效. 一.请不要在新代码中使用原生态类型 1.泛型类和接口统称为泛型,有一个对应的原生态类型. 2.原生类型的存在是为了移植兼容性. 3.无限制通配类型和原生态类型 ...

  8. 字串符相关 split() 字串符分隔 substring() 提取字符串 substr()提取指定数目的字符 parseInt() 函数可解析一个字符串,并返回一个整数。

    split() 方法将字符串分割为字符串数组,并返回此数组. stringObject.split(separator,limit) 我们将按照不同的方式来分割字符串: 使用指定符号分割字符串,代码如 ...

  9. jdk 1.7 在ubuntu 环境配置

    在/opt/里解压了jdk 1.7后 设置环境变量 chen@caicai ~ $ vim .profile export JAVA_HOME=/opt/jdk1..0_79 export JRE_H ...

  10. Laplacian matrix 从拉普拉斯矩阵到谱聚类

    谱聚类步骤 第一步:数据准备,生成图的邻接矩阵: 第二步:归一化普拉斯矩阵: 第三步:生成最小的k个特征值和对应的特征向量: 第四步:将特征向量kmeans聚类(少量的特征向量):