package com.vci.server.workflow.server; import java.io.File; import java.net.URI; import java.net.URL; import java.net.URLClassLoader; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Enumeration; import java.util.List; import java.util.jar.JarEntry; import java.util.jar.JarFile; import java.util.zip.ZipEntry; import com.vci.server.workflow.common.resouce.EventProperties; /** * * add by caill 遍历获取所有eventConf_模块名称.properties格式的文件 * * */ public class EventUtil { public static void main(String[] args){ EventUtil eu = new EventUtil(); eu.getAlleventConfName(); System.out.println(EventProperties.getStringProperty("workflow.event.type.trainsition")); } private static String SPLIT_CHAR = "##"; public List getAlleventConfName() { List nameList = new ArrayList(); try { URLClassLoader loader = (URLClassLoader)this.getClass().getClassLoader(); URL[] urls = loader.getURLs(); for(URL url : urls){ URI uri = url.toURI(); String uriToString = uri.toString(); if(uriToString.endsWith(".jar")){ JarFile jar = new JarFile(new File(uri)); Enumeration entrys = jar.entries(); while(entrys.hasMoreElements()){ JarEntry entry = entrys.nextElement(); ZipEntry zip = (ZipEntry)entry; String zipName = zip.getName(); if(zipName.contains("properties/eventConf") && zipName.endsWith(".properties")){ nameList.add(zipName + SPLIT_CHAR + uriToString); } } } } Collections.sort(nameList, new Comparator() { public int compare(String o1, String o2) { int index1= o1.indexOf(SPLIT_CHAR); int index2= o2.indexOf(SPLIT_CHAR); String str1 = o1.substring(0, index1); String str2 = o2.substring(0, index2); return str1.compareTo(str2); } }); int splitCharLen = SPLIT_CHAR.length(); List list = new ArrayList(); for (String name: nameList){ int index = name.indexOf(SPLIT_CHAR); String zipName = name.substring(0, index); String uriToString = name.substring(index + splitCharLen); //System.out.println("#####properties的路径======" + uriToString + "!" + zipName); list.add(zipName); } nameList = list; } catch (Exception e) { e.printStackTrace(); } return nameList; } }