java实现解压war_java文件操作之war压缩解压
文章来源:
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压缩解压相关推荐
- Day 3 Linux(目录篇 、文件操作篇 、压缩解压相关命令, 编辑器vi 、编译器gcc 、调试器gdb、 makefile工程管理器初学)
一.目录篇: 1.文件处理命令:cp 英文原意:copy 语法:cp -rp[源文件或目录][目的目录] 源文件可以同时是多个,即同时复制到多个文件 -r 复制目录 -p保留文件属性,比如文件创建时间 ...
- mac 命令行 解压7z文件_命令行压缩解压7z
命令行压缩解压一 7z 1) 简介7z,全称7-Zip, 是一款开源软件.是目前公认的压缩比例最大的压缩解压软件.主页:http://www.7-zip.org/中文主页:http://7z.spar ...
- 【Android 安全】DEX 加密 ( 代理 Application 开发 | 解压 apk 文件 | 判定是否是第一次启动 | 递归删除文件操作 | 解压 Zip 文件操作 )
文章目录 一.判定是否是第一次启动 二.递归删除文件操作 三.解压 Zip 文件操作 四.解压操作相关代码 参考博客 : [Android 安全]DEX 加密 ( 常用 Android 反编译工具 | ...
- Linux常用命令--文件搜索命令:压缩解压命令
1.命令名称:gzip 命令英文原意:GNUzip 命令所在路径:/bin/gzip 执行权限:所有用户 语法:gzip [文件] 功能描述:压缩文件 压缩后文件格式:.gz 2.命令名称:gunzi ...
- 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 ...
- c语言 freopen txt_C语言文件操作函数freopen详解
C语言文件操作函数freopen详解 今天做USACO 用到了文件的操作. 之前做USACO只是格式化的.些 写 freopen("xxx.in","r",st ...
- Linux世界的三种压缩解压方式,zip/unzip方式压缩解压、tar方式压缩解压、jar方式压缩解压暨shopt extglob反选示例
Linux世界的三种压缩解压方式,zip/unzip方式压缩解压.tar方式压缩解压.jar方式压缩解压暨shopt extglob反选示例 zip/unzip方式.tar方式压缩解压是Linux中的 ...
- Linux下文件(文件夹)的压缩和解压
前言 在linux下,当我们上传一个较大的文件或者要安装一个软件(如tomcat.mysql等)时,我们需要先将官网下载的压缩包在linux服务器上进行解压,再进行安装.如果是由程序包生成的一个目录内 ...
- python解压zip文件_Python中最快解压zip文件的方法
假设现在的上下文(LCTT 译注:context,计算机术语,此处意为业务情景)是这样的:一个 zip 文件被上传到一个Web 服务中,然后 Python 需要解压这个 zip 文件然后分析和处理其中 ...
- linux解压exe文件,在Deepin V20系统下解压Windows中.exe文件的方法
其实在Linux系统下解压Windows中.exe文件非常的简单,如果使用的是Ubuntu系统,只需双击.exe文件,然后系统自带的解压软件就可以查看到.exe文件里面的内容,然而,如果是在Deepi ...
最新文章
- win7分区c盘调整容量_重装Win7系统步骤「xitongtiandi.net」
- Spring框架学习day_02:组件扫描 / 注解内部读解 / 组件扫描中配置作用域和生命周期 / 解耦 / 自动装配(两种方式) / 读取文件
- val_loss突然变很大_程干朋说网络营销之网站收录突然降低怎么办?
- java并发编程实践(1)intro
- React开发(148):componentWillReceiveProps
- Python面试准备
- python爬虫怎么写多线程_Python爬虫4.1 — threading(多线程)用法教程
- 电容麦克风测试软件,章和电气AudioExpress麦克风测试解决方案———您的音频测试专家...
- win10下ctfmon.exe系统程序误删的解决方案
- ScreenToClient And ClientToScreen
- 充电速度公式_锂电充电时间计算公式
- 关于iCloud的注册,到代码的实现
- backtrack渗透测试中常用的命令总结
- matlab2015的marker,matlab中markersize什么意思
- VMware 虚拟机系统 与 win10 共享文件夹问题的解决
- Deel:20个月,ARR 1M to 100M。
- Unity九宫格切割图片 2D Sprite
- Warning: mysqli_fetch_assoc() expects exactly 1 parameter, 2 given in求解决
- 广搜4 ——Cheese
- k8s入坑之报错(11)添加node节点报错:error execution phase preflight: [preflight] Some fatal errors occurred:...