java文件操作之war压缩解压

Posted 我的名字是Sheldon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java文件操作之war压缩解压相关的知识,希望对你有一定的参考价值。


文章来源:

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

http://www.androidstar.cn/java%E5%AE%9E%E7%8E%B0%E5%8F%AF%E5%8E%8B%E7%BC%A9%E6%88%96%E8%A7%A3%E5%8E%8B%E7%BC%A9war%E6%96%87%E4%BB%B6/


 


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<File> 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压缩解压的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat下实现热部署和自动解压war包替换现有文件夹的操作

宝塔Linux面板在线解压WAR压缩文件

Linux下打包压缩war和解压war包

linux解压war包

Linux操作系统基础操作之文件压缩

Java操作文件的日常总结(文件压缩,文件解压,递归删除文件,文件的下载保存)