博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文件压缩
阅读量:5985 次
发布时间:2019-06-20

本文共 3218 字,大约阅读时间需要 10 分钟。

package com.jcsoft.transaction.common.action;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;/** * 压缩文件 */public class DownPackAction {     public static 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 static 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();               }              }             }             public static void main(String[] args) {                    try {                     //将D:\\test1文件夹打包到D:\\test2并命名为test1.zip                    doZip("D:\\test1","D:\\test2\\test1.zip");                 } catch (IOException e) {                    e.printStackTrace();                }                   }   }

 

转载于:https://www.cnblogs.com/angto64/p/6177957.html

你可能感兴趣的文章
LoadRunner录制Socket协议脚本乱码调研
查看>>
难以量化的需求开发与管理
查看>>
测试组是助力研发软件质量还是拉软件周期后腿?
查看>>
通信机房DC化“全国一盘棋” 基础设施如何规划演进
查看>>
Qt环境搭建(Qt Creator)
查看>>
Flight Gear 3.2 发布,开源飞机仿真器
查看>>
《Cisco IPv6网络实现技术(修订版)》一2.2 寻址
查看>>
QGraphicsItem的类型检测与转换
查看>>
《iOS应用软件设计之道》—— 3.5 练习
查看>>
01_基于应用拆分的技术架构
查看>>
Docker 开源集群管理和容器编排工具 SwarmKit
查看>>
《DNS与BIND(第5版)》——4.8 运行一个slave名称服务器
查看>>
《Storm分布式实时计算模式》——2.4 把toplogy提交到集群中
查看>>
防盗功能!Windows Phone 安全特性更上一层楼
查看>>
《Linux命令行大全》——第2章 导 航 2.1 理解文件系统树
查看>>
《高级无线网络—4G技术》——1.2 协议增强器
查看>>
《文明之光 第二册》一一10.7 海上马车夫—— 荷兰的崛起(2)
查看>>
Android L 值不值得刷?十个问题解疑惑
查看>>
通过yum快速安装cacti
查看>>
《MATLAB智能算法超级学习手册》一一1.3 符号变量的应用
查看>>