文章来源:

java实现可压缩或解压缩WAR文件

package utils;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.util.Iterator;

import org.apache.commons.compress.archivers.ArchiveException;

import org.apache.commons.compress.archivers.ArchiveInputStream;

import org.apache.commons.compress.archivers.ArchiveOutputStream;

import org.apache.commons.compress.archivers.ArchiveStreamFactory;

import org.apache.commons.compress.archivers.jar.JarArchiveEntry;

import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;

import org.apache.commons.compress.utils.IOUtils;

import org.apache.commons.io.FileUtils;

/**

* 处理WAR文件工具类。可压缩或解压缩WAR文件。

*

* @author Xiong Shuhong(shelltea@gmail.com)

*/

public class WarUtils {

public static void unzip(String warPath, String unzipPath) {

File warFile = new File(warPath);

try {

BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(warFile));

ArchiveInputStream in = new ArchiveStreamFactory().createArchiveInputStream(ArchiveStreamFactory.JAR,

bufferedInputStream);

JarArchiveEntry entry = null;

while ((entry = (JarArchiveEntry) in.getNextEntry()) != null) {

if (entry.isDirectory()) {

new File(unzipPath, entry.getName()).mkdir();

} else {

OutputStream out = FileUtils.openOutputStream(new File(unzipPath, entry.getName()));

IOUtils.copy(in, out);

out.close();

}

}

in.close();

} catch (FileNotFoundException e) {

System.err.println("未找到war文件");

} catch (ArchiveException e) {

System.err.println("不支持的压缩格式");

} catch (IOException e) {

System.err.println("文件写入发生错误");

}

}

public static void zip(String destFile, String zipDir) {

File outFile = new File(destFile);

try {

outFile.createNewFile();

BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(outFile));

ArchiveOutputStream out = new ArchiveStreamFactory().createArchiveOutputStream(ArchiveStreamFactory.JAR,

bufferedOutputStream);

if (zipDir.charAt(zipDir.length() - 1) != '/') {

zipDir += '/';

}

Iterator files = FileUtils.iterateFiles(new File(zipDir), null, true);

while (files.hasNext()) {

File file = files.next();

ZipArchiveEntry zipArchiveEntry = new ZipArchiveEntry(file, file.getPath().replace(

zipDir.replace("/", "\\"), ""));

out.putArchiveEntry(zipArchiveEntry);

IOUtils.copy(new FileInputStream(file), out);

out.closeArchiveEntry();

}

out.finish();

out.close();

} catch (IOException e) {

System.err.println("创建文件失败");

} catch (ArchiveException e) {

System.err.println("不支持的压缩格式");

}

}

}

java实现解压war_java文件操作之war压缩解压相关推荐

  1. Day 3 Linux(目录篇 、文件操作篇 、压缩解压相关命令, 编辑器vi 、编译器gcc 、调试器gdb、 makefile工程管理器初学)

    一.目录篇: 1.文件处理命令:cp 英文原意:copy 语法:cp -rp[源文件或目录][目的目录] 源文件可以同时是多个,即同时复制到多个文件 -r 复制目录 -p保留文件属性,比如文件创建时间 ...

  2. mac 命令行 解压7z文件_命令行压缩解压7z

    命令行压缩解压一 7z 1) 简介7z,全称7-Zip, 是一款开源软件.是目前公认的压缩比例最大的压缩解压软件.主页:http://www.7-zip.org/中文主页:http://7z.spar ...

  3. 【Android 安全】DEX 加密 ( 代理 Application 开发 | 解压 apk 文件 | 判定是否是第一次启动 | 递归删除文件操作 | 解压 Zip 文件操作 )

    文章目录 一.判定是否是第一次启动 二.递归删除文件操作 三.解压 Zip 文件操作 四.解压操作相关代码 参考博客 : [Android 安全]DEX 加密 ( 常用 Android 反编译工具 | ...

  4. Linux常用命令--文件搜索命令:压缩解压命令

    1.命令名称:gzip 命令英文原意:GNUzip 命令所在路径:/bin/gzip 执行权限:所有用户 语法:gzip [文件] 功能描述:压缩文件 压缩后文件格式:.gz 2.命令名称:gunzi ...

  5. ubuntu16.04 server unrar解压rar文件提示command not found和解压tar.bz2文件

    ubuntu16.04 server unrar解压rar文件提示command not found和解压tar.bz2文件 Unrar解压rar文件失败 unrar e a.rar -sh: unr ...

  6. c语言 freopen txt_C语言文件操作函数freopen详解

    C语言文件操作函数freopen详解 今天做USACO 用到了文件的操作. 之前做USACO只是格式化的.些 写 freopen("xxx.in","r",st ...

  7. Linux世界的三种压缩解压方式,zip/unzip方式压缩解压、tar方式压缩解压、jar方式压缩解压暨shopt extglob反选示例

    Linux世界的三种压缩解压方式,zip/unzip方式压缩解压.tar方式压缩解压.jar方式压缩解压暨shopt extglob反选示例 zip/unzip方式.tar方式压缩解压是Linux中的 ...

  8. Linux下文件(文件夹)的压缩和解压

    前言 在linux下,当我们上传一个较大的文件或者要安装一个软件(如tomcat.mysql等)时,我们需要先将官网下载的压缩包在linux服务器上进行解压,再进行安装.如果是由程序包生成的一个目录内 ...

  9. python解压zip文件_Python中最快解压zip文件的方法

    假设现在的上下文(LCTT 译注:context,计算机术语,此处意为业务情景)是这样的:一个 zip 文件被上传到一个Web 服务中,然后 Python 需要解压这个 zip 文件然后分析和处理其中 ...

  10. linux解压exe文件,在Deepin V20系统下解压Windows中.exe文件的方法

    其实在Linux系统下解压Windows中.exe文件非常的简单,如果使用的是Ubuntu系统,只需双击.exe文件,然后系统自带的解压软件就可以查看到.exe文件里面的内容,然而,如果是在Deepi ...

最新文章

  1. win7分区c盘调整容量_重装Win7系统步骤「xitongtiandi.net」
  2. Spring框架学习day_02:组件扫描 / 注解内部读解 / 组件扫描中配置作用域和生命周期 / 解耦 / 自动装配(两种方式) / 读取文件
  3. val_loss突然变很大_程干朋说网络营销之网站收录突然降低怎么办?
  4. java并发编程实践(1)intro
  5. React开发(148):componentWillReceiveProps
  6. Python面试准备
  7. python爬虫怎么写多线程_Python爬虫4.1 — threading(多线程)用法教程
  8. 电容麦克风测试软件,章和电气AudioExpress麦克风测试解决方案———您的音频测试专家...
  9. win10下ctfmon.exe系统程序误删的解决方案
  10. ScreenToClient And ClientToScreen
  11. 充电速度公式_锂电充电时间计算公式
  12. 关于iCloud的注册,到代码的实现
  13. backtrack渗透测试中常用的命令总结
  14. matlab2015的marker,matlab中markersize什么意思
  15. VMware 虚拟机系统 与 win10 共享文件夹问题的解决
  16. Deel:20个月,ARR 1M to 100M。
  17. Unity九宫格切割图片 2D Sprite
  18. Warning: mysqli_fetch_assoc() expects exactly 1 parameter, 2 given in求解决
  19. 广搜4 ——Cheese
  20. k8s入坑之报错(11)添加node节点报错:error execution phase preflight: [preflight] Some fatal errors occurred:...

热门文章

  1. 正则表达式应用(以手机号为例)
  2. Python+Pid实现车辆速度跟踪
  3. 电子元器件选型——电容
  4. 数据结构复习-day01-SqList顺序表
  5. 谷歌安装FeHelper插件
  6. 【转】机器学习入门——浅谈神经网络
  7. Webrtc 屏幕共享
  8. html 文件对比,文件内容差异对比方法
  9. java jsp中文乱码怎么解决_分享JSP中文乱码解决方法
  10. linuxcan接口测试