`
changqingonly
  • 浏览: 25175 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

XX.properties路径问题

阅读更多
在Struts里是这么处理的:
打开struts-core包里的org.apache.struts.util.PropertyMessageResources类文件,当然是源代码文件啦。
protected synchronized void loadLocale(String localeKey) {
        if (log.isTraceEnabled()) {
            log.trace("loadLocale(" + localeKey + ")");
        }

        // Have we already attempted to load messages for this locale?
        if (locales.get(localeKey) != null) {
            return;
        }

        locales.put(localeKey, localeKey);

        // Set up to load the property resource for this locale key, if we can
        String name = config.replace('.', '/');

        if (localeKey.length() > 0) {
            name += ("_" + localeKey);
        }

        name += ".properties";

        InputStream is = null;
        Properties props = new Properties();

        // Load the specified property resource
        if (log.isTraceEnabled()) {
            log.trace("  Loading resource '" + name + "'");
        }

        ClassLoader classLoader =
            Thread.currentThread().getContextClassLoader();

        if (classLoader == null) {
            classLoader = this.getClass().getClassLoader();
        }

        is = classLoader.getResourceAsStream(name);

        if (is != null) {
            try {
                props.load(is);
            } catch (IOException e) {
                log.error("loadLocale()", e);
            } finally {
                try {
                    is.close();
                } catch (IOException e) {
                    log.error("loadLocale()", e);
                }
            }
            if (log.isTraceEnabled()) {
                log.trace("  Loading resource completed");
            }
        } else {
            if (log.isWarnEnabled()) {
                log.warn("  Resource "+name+" Not Found.");
            }
        }


        // Copy the corresponding values into our cache
        if (props.size() < 1) {
            return;
        }

        synchronized (messages) {
            Iterator names = props.keySet().iterator();

            while (names.hasNext()) {
                String key = (String) names.next();

                if (log.isTraceEnabled()) {
                    log.trace("  Saving message key '"
                        + messageKey(localeKey, key));
                }

                messages.put(messageKey(localeKey, key), props.getProperty(key));
            }
        }
    }

----------------------------------------------------------------网摘-----------------------------------
--------------------------------1。使用java.util.Properties类的load()方法示例:
InputStreamin=lnewBufferedInputStream(newFileInputStream(name));
Propertiesp=newProperties();
p.load(in);


2。使用java.util.ResourceBundle类的getBundle()方法示例:
ResourceBundlerb=ResourceBundle.getBundle(name,Locale.getDefault());


3。使用java.util.PropertyResourceBundle类的构造函数示例:
InputStreamin=newBufferedInputStream(newFileInputStream(name));
ResourceBundlerb=newPropertyResourceBundle(in);


4。使用class变量的getResourceAsStream()方法示例:
InputStreamin=JProperties.class.getResourceAsStream(name);
Propertiesp=newProperties();
p.load(in);


5。使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法示例:
InputStreamin = JProperties.class.getClassLoader().getResourceAsStream(name);
Propertiesp = newProperties();
p.load(in);


6。使用java.lang.ClassLoader类的getSystemResourceAsStream()静态方法示例:
InputStreamin=ClassLoader.getSystemResourceAsStream(name);
Propertiesp=newProperties();
p.load(in);


补充

  Servlet中可以使用javax.servlet.ServletContext的getResourceAsStream()方法示例:
InputStreamin=context.getResourceAsStream(path);
Propertiesp=newProperties();
p.load(in); 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics