I'm happy to live!

Develop with pleasure!

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  39 随笔 :: 2 文章 :: 31 评论 :: 0 Trackbacks
今天学习了java ResourceBundle类的内容,但一直还有一个问题没有解决,就是它读取资源文件路径的问题.

以下是我的代码:
 1package test.resource;
 2
 3import java.util.Locale;
 4import java.util.ResourceBundle;
 5
 6public class Test {
 7    public static void main(String args[]) {
 8        Test test = new Test();
 9        ResourceBundle messages = test.loadResource();
10        System.out.println(messages.getObject("name"));
11    }

12
13    private ResourceBundle loadResource() {
14        Locale local = Locale.getDefault();
15        ResourceBundle messages = ResourceBundle.getBundle("messages", local,
16                this.getClass().getClassLoader());
17        return messages;
18    }

19}
 我的两个资源文件messages_en_US.properties,messages_zh_CN.properties都在当前类路径下面,可是这样的话运行程序它就找不到资源文件,会报错:Can't find bundle for base name messages, locale zh_CN
我必需把两个资源文件copy到classes根目录下才行,我想资源文件是可以放在当前类路径下面的,可是不太清楚如何读取出来,ResourceBundle.getBundle("messages", local,
    this.getClass().getClassLoader());方法好像只能读根路径下的资源,请教各位了!
posted on 2010-12-26 18:37 Norsor 阅读(12339) 评论(2)  编辑  收藏 所属分类: Diaryprogramme

评论

# re: ResourceBundle读取资源文件的路径问题 2010-12-27 00:07 wenlin
资源文件放在那个包下,加上包的全路径就可以了  回复  更多评论
  

# re: ResourceBundle读取资源文件的路径问题 2010-12-27 00:27 Aidan Zou
这里是使用的ClassLoader加载资源文件。
ResourceBundle messages = ResourceBundle.getBundle("test/resource/messages", local,this.getClass().getClassLoader());
如果你改成这样应该是可以运行的。
ClassLoader加载资源文件的默认目录是CLASSPATH,所以你需要把资源文件存放于classes目录中(不能在其子目录),如果在子目录需要指定子目录的位置。  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问