大家好,又见面了,我是你们的朋友全栈君。
文章来源:
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(“不支持的压缩格式”);
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/185805.html原文链接:https://javaforall.cn