package com.aspire.reportPlatform.webagent;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
/**
*
* @author Jhonson Lee
* 实现各种路径的解压缩, 包括 url 和 绝对路径
*/
public class UnZipUtil {
/**
*
* @param sourceFile 源文件
* @param outputFolder 输出的目标目录
*/
public static void unZipResources(String sourceFile,String outputFolder){
String archivePath = sourceFile;
ZipInputStream zis = null;
ZipEntry entry = null;
URLConnection con = null;
String rdpOutputFolder = outputFolder;
File configFile=new File(rdpOutputFolder);
if(!configFile.exists()) {
configFile.mkdir();
}
try {
con = (new URL(archivePath)).openConnection();
con.setUseCaches(false);
con.connect();
zis = new ZipInputStream(con.getInputStream());
while ((entry = zis.getNextEntry()) != null){
if (entry.isDirectory()) {
String name = entry.getName();
name = name.substring(0, name.length() - 1);
File f = new File(rdpOutputFolder + File.separator + name);
f.mkdir();
} else {
unZipResource(zis, entry.getName(),rdpOutputFolder);
}
}
} catch (IOException ioe) {
StatusPanel.getStatusPanelInstance().setStatus((byte) 8);
ioe.printStackTrace();
// LogFile.getInstance().print(0,
// "WebAgentApplet.installLibraries()",
// "install have IOException ");
}catch(Exception e){
e.printStackTrace();
}finally {
con = null;
try {
zis.close();
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
}
/**
*
* @param archive
* @param configResourceName
* @param path
*/
private static void unZipResource(ZipInputStream archive, String configResourceName,String path){
BufferedOutputStream out = null;
byte buffer[] = new byte[1024];
int count = 0;
String configFullPathName = path + File.separator + configResourceName;
try {
out = new BufferedOutputStream(
new FileOutputStream(configFullPathName));
while ((count = archive.read(buffer)) > 0)
out.write(buffer, 0, count);
out.close();
} catch (IOException e) {
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
try {
out.close();
} catch (IOException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
}
}
}
}
完全实现 各种变态路径的解压缩,支持在 Web 上运行(在数字签名中遇到的问题,想到了用这种写法)
最新推荐文章于 2023-03-16 10:55:15 发布
本文介绍了一个用于解压ZIP格式文件的Java工具类。该工具支持从URL或本地文件路径读取ZIP文件,并将其内容解压到指定的目标文件夹。通过创建ZipInputStream并遍历ZipEntry来处理每个文件和文件夹。
2340

被折叠的 条评论
为什么被折叠?



