zoukankan      html  css  js  c++  java
  • 加载所有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.
         * <p>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<URL> 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)
  • 相关阅读:
    kill eclipse
    C语言之表达式运算整体提升
    查找函数对比:findall,search,match
    Linux backtrace()
    git本地协同
    git 撤销push到服务器的代码
    gtest
    C陷阱篇之enum默认长度
    程序员中文开发者手册
    C语言错题分析
  • 原文地址:https://www.cnblogs.com/hfultrastrong/p/10772654.html
Copyright © 2011-2022 走看看