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)
  • 相关阅读:
    How to create jar for Android Library Project
    Very large tabs in eclipse panes on Ubuntu
    64bit Ubuntu, Android AAPT, R.java
    Linux(Ubuntu)下如何安装JDK
    Configure xterm Fonts and Colors for Your Eyeball
    建立、配置和使用Activity——启动其他Activity并返回结果
    建立、配置和使用Activity——使用Bundle在Activity之间交换数据
    建立、配置和使用Activity——启动、关闭Activity
    建立、配置和使用Activity——Activity
    异步任务(AsyncTask)
  • 原文地址:https://www.cnblogs.com/hfultrastrong/p/10772654.html
Copyright © 2011-2022 走看看