java压缩zip文件
来源:互联网 发布:php print 编辑:程序博客网 时间:2024/04/30 12:15
- public File doZip(String sourceDir, String zipFilePath)
- throws IOException {
- File file = new File(sourceDir);
- File zipFile = new File(zipFilePath);
- ZipOutputStream zos = null;
- try {
- // 创建写出流操作
- OutputStream os = new FileOutputStream(zipFile);
- BufferedOutputStream bos = new BufferedOutputStream(os);
- zos = new ZipOutputStream(bos);
- String basePath = null;
- // 获取目录
- if(file.isDirectory()) {
- basePath = file.getPath();
- }else {
- basePath = file.getParent();
- }
- zipFile(file, basePath, zos);
- }finally {
- if(zos != null) {
- zos.closeEntry();
- zos.close();
- }
- }
- return zipFile;
- }
- /**
- * @param source 源文件
- * @param basePath
- * @param zos
- */
- private void zipFile(File source, String basePath, ZipOutputStream zos)
- throws IOException {
- File[] files = null;
- if (source.isDirectory()) {
- files = source.listFiles();
- } else {
- files = new File[1];
- files[0] = source;
- }
- InputStream is = null;
- String pathName;
- byte[] buf = new byte[1024];
- int length = 0;
- try{
- for(File file : files) {
- if(file.isDirectory()) {
- pathName = file.getPath().substring(basePath.length() + 1) + "/";
- zos.putNextEntry(new ZipEntry(pathName));
- zipFile(file, basePath, zos);
- }else {
- pathName = file.getPath().substring(basePath.length() + 1);
- is = new FileInputStream(file);
- BufferedInputStream bis = new BufferedInputStream(is);
- zos.putNextEntry(new ZipEntry(pathName));
- while ((length = bis.read(buf)) > 0) {
- zos.write(buf, 0, length);
- }
- }
- }
- }finally {
- if(is != null) {
- is.close();
- }
- }
- }
- 使用org.apache.tools.zip.ZipOutputStream,代码如下
- public class ZipCompressor {
- static final int BUFFER = 8192;
- private File zipFile;
- public ZipCompressor(String pathName) {
- zipFile = new File(pathName);
- }
- public void compress(String srcPathName) {
- File file = new File(srcPathName);
- if (!file.exists())
- throw new RuntimeException(srcPathName + "不存在!");
- try {
- FileOutputStream fileOutputStream = new FileOutputStream(zipFile);
- CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream,
- new CRC32());
- ZipOutputStream out = new ZipOutputStream(cos);
- String basedir = "";
- compress(file, out, basedir);
- out.close();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
- private void compress(File file, ZipOutputStream out, String basedir) {
- /* 判断是目录还是文件 */
- if (file.isDirectory()) {
- System.out.println("压缩:" + basedir + file.getName());
- this.compressDirectory(file, out, basedir);
- } else {
- System.out.println("压缩:" + basedir + file.getName());
- this.compressFile(file, out, basedir);
- }
- }
- /** 压缩一个目录 */
- private void compressDirectory(File dir, ZipOutputStream out, String basedir) {
- if (!dir.exists())
- return;
- File[] files = dir.listFiles();
- for (int i = 0; i < files.length; i++) {
- /* 递归 */
- compress(files[i], out, basedir + dir.getName() + "/");
- }
- }
- /** 压缩一个文件 */
- private void compressFile(File file, ZipOutputStream out, String basedir) {
- if (!file.exists()) {
- return;
- }
- try {
- BufferedInputStream bis = new BufferedInputStream(
- new FileInputStream(file));
- ZipEntry entry = new ZipEntry(basedir + file.getName());
- out.putNextEntry(entry);
- int count;
- byte data[] = new byte[BUFFER];
- while ((count = bis.read(data, 0, BUFFER)) != -1) {
- out.write(data, 0, count);
- }
- bis.close();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
- }
- 可以用ant中的org.apache.tools.ant.taskdefs.Zip来实现,更加简单
- public class ZipCompressorByAnt {
- private File zipFile;
- public ZipCompressorByAnt(String pathName) {
- zipFile = new File(pathName);
- }
- public void compress(String srcPathName) {
- File srcdir = new File(srcPathName);
- if (!srcdir.exists())
- throw new RuntimeException(srcPathName + "不存在!");
- Project prj = new Project();
- Zip zip = new Zip();
- zip.setProject(prj);
- zip.setDestFile(zipFile);
- FileSet fileSet = new FileSet();
- fileSet.setProject(prj);
- fileSet.setDir(srcdir);
- //fileSet.setIncludes("**/*.java"); 包括哪些文件或文件夹 eg:zip.setIncludes("*.java");
- //fileSet.setExcludes(...); 排除哪些文件或文件夹
- zip.addFileset(fileSet);
- zip.execute();
- }
- }
- 测试一下
- Java代码
- package net.szh.zip;
- public class TestZip {
- public static void main(String[] args) {
- ZipCompressor zc = new ZipCompressor("E:\\szhzip.zip");
- zc.compress("E:\\test");
- ZipCompressorByAnt zca = new ZipCompressorByAnt("E:\\szhzipant.zip");
- zca.compress("E:\\test");
- }
- }
原址:http://411373793.iteye.com/blog/2181118
0 0
- Java压缩zip文件
- java压缩zip文件
- Java压缩解压缩zip文件
- Java压缩解压缩zip文件
- java压缩zip文件相关
- java实现文件zip压缩
- java实现压缩zip文件
- java压缩解压ZIP文件
- Java zip/gzip文件压缩和解压缩
- Java zip/gzip文件压缩和解压缩
- Java把文件压缩成zip文件
- JAVA 将文件压缩为zip文件
- java把文件压缩成zip文件
- [Java] Java Zip文件压缩与解压缩
- java读取zip文件和压缩zip文件
- Java 基于java.util.zip类压缩解压Zip文件
- 使用java zip 压缩单个文件
- Java 解压和压缩密码zip文件
- Quartz Cron 表达式 格式: [秒] [分] [小时] [日] [月] [周] [年]
- 揭秘跑男全部游戏规则及说明
- 客户端JavaScript加密数据,服务端Java解密数据
- 镜头的选择(一)
- Android Fragment 实现页面跳转
- java压缩zip文件
- groovy分析脚本基本组成文件详解和运行过程中出错分析
- 揭秘跑男全部游戏规则及说明
- IBM一键恢复迀移要点(无恢复光盘)
- 2个牛逼的js处理日期和时间的库
- FNDLOAD数据移植
- centos mongo数据库的安装
- STM32 系统时钟设置
- 一个问题的思考