完全实现 各种变态路径的解压缩,支持在 Web 上运行(在数字签名中遇到的问题,想到了用这种写法)

本文介绍了一个用于解压ZIP格式文件的Java工具类。该工具支持从URL或本地文件路径读取ZIP文件,并将其内容解压到指定的目标文件夹。通过创建ZipInputStream并遍历ZipEntry来处理每个文件和文件夹。
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();
			}
		}

		
    }
}
数据驱动的两阶段分布鲁棒(1-范数和∞-范数约束)的电热综合能源系统研究(Matlab代码实现)内容概要:本文围绕“数据驱动的两阶段分布鲁棒(1-范数和∞-范数约束)的电热综合能源系统研究”展开,提出了一种结合数据驱动与分布鲁棒优化方法的建模框架,用于解决电热综合能源系统在不确定性环境下的优化调度问题。研究采用两阶段优化结构,第一阶段进行预决策,第二阶段根据实际场景进行调整,通过引入1-范数和∞-范数约束来构建不确定集,有效刻画风电、负荷等不确定性变量的波动特性,提升模型的鲁棒性和实用性。文中提供了完整的Matlab代码实现,便于读者复现和验证算法性能,并结合具体案例分析了不同约束条件下系统运行的经济性与可靠性。; 适合人群:具备一定电力系统、优化理论和Matlab编程基础的研究生、科研人员及工程技术人员,尤其适合从事综合能源系统、鲁棒优化、不确定性建模等相关领域研究的专业人士。; 使用场景及目标:①掌握数据驱动的分布鲁棒优化方法在综合能源系统中的应用;②理解1-范数和∞-范数在构建不确定集中的作用与差异;③学习两阶段鲁棒优化模型的建模思路与Matlab实现技巧,用于科研复现、论文写作或工程项目建模。; 阅读建议:建议读者结合提供的Matlab代码逐段理解算法实现细节,重点关注不确定集构建、两阶段模型结构设计及求解器调用方式,同时可尝试更换数据或调整约束参数以加深对模型鲁棒性的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值