加载所有jar包下指定文件

加载所有jar包下指定文件:

如spring中加载 META-INF/spring.handlers 加载

 


 

org.springframework.core.io.support.PropertiesLoaderUtils#loadAllProperties(java.lang.String, java.lang.ClassLoader)

    /**
     * Load all properties from the specified class path resource
     * (in ISO-8859-1 encoding), using the given class loader.
     * 

Merges properties if more than one resource of the same name * found in the class path. * @param resourceName the name of the class path resource * @param classLoader the ClassLoader to use for loading * (or {@code null} to use the default class loader) * @return the populated Properties instance * @throws IOException if loading failed */ public static Properties loadAllProperties(String resourceName, @Nullable ClassLoader classLoader) throws IOException { Assert.notNull(resourceName, "Resource name must not be null"); ClassLoader classLoaderToUse = classLoader; if (classLoaderToUse == null) { classLoaderToUse = ClassUtils.getDefaultClassLoader(); } Enumeration urls = (classLoaderToUse != null ? classLoaderToUse.getResources(resourceName) : ClassLoader.getSystemResources(resourceName)); Properties props = new Properties(); while (urls.hasMoreElements()) { URL url = urls.nextElement(); URLConnection con = url.openConnection(); ResourceUtils.useCachesIfNecessary(con); InputStream is = con.getInputStream(); try { if (resourceName.endsWith(XML_FILE_EXTENSION)) { props.loadFromXML(is); } else { props.load(is); } } finally { is.close(); } } return props; }

 

事例:

    public static void main(String[] args) {
        String handlerMappingsLocation = "META-INF/spring.handlers";
        try {
            Properties properties = PropertiesLoaderUtils.loadAllProperties(handlerMappingsLocation, BeanUtil.class.getClassLoader());
            Enumeration enumeration = properties.propertyNames();
            while (enumeration.hasMoreElements()) {
                String key = (String) enumeration.nextElement();
                System.out.println(key);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

 

核心语法:

ClassLoader.getSystemResources(resourceName)

 

转载于:https://www.cnblogs.com/hfultrastrong/p/10772654.html

你可能感兴趣的:(java)