逛奔的蜗牛

我不聪明,但我会很努力

   ::  :: 新随笔 ::  ::  :: 管理 ::

        String path2 = System.getProperty("user.dir") + File.separator + "languages"

                + File.separator + language + ".xml";


        String path = getClass().getClassLoader().getResource(

            "languages" + File.separator + language + ".xml").getFile();


以上两个方法这样用问题大大的有:

1. user.dir在普通的单机程序中一般不会出问题,但在网络方面,如tomcat等,user.dir目录有可能是tomcat的bin目录等其他目录。

2. ClassLoader使用的文件分隔符是'/',不管是在Unix还是Windows,所以在上面使用的: "languages" + File.separator + language + ".xml"

a. 在Windows里就是"languages\" + language + ".xml"),因为ClassLoader在这里并没有把'\'作为文件分隔符,而是作为文件名里的一个字符,所以加载文件时会出错。

b. 在Unix里是"languages/" + language + ".xml"): 运行正常


所以直接使用:

String path = getClass().getClassLoader().getResource("languages/" + language + ".xml").getFile();


ClassLoader有三种:系统使用的BootStrap ClassLoader, Extend ClassLoader(加载jre/lib/ext目录里的类), Application ClassLoader(加载应用程序类,即用户自己定义的类)

posted on 2010-05-18 02:36 逛奔的蜗牛 阅读(1195) 评论(0)  编辑 收藏 引用 所属分类: Java

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理