读取配置文件Properties的一种方案(Thread.currentThread().getContextClassLoader() .getResourceAsStream())

Java路径

Java中使用的路径,分为两种:绝对路径和相对路径。

具体而言,又分为四种:

一 URI形式的绝对资源路径

如:
file:/D:/java/eclipse32/workspace/jbpmtest3/bin/aaa.b

  • URL是URI的特例。
  • URL可以打开资源,而URI则不行。
  • URL的前缀/协议,必须是Java熟悉的。
  • URL和URI对象可以互相转换,使用各自的toURI(),toURL()方法即可!

二 本地系统的绝对路径

如:
D:/java/eclipse32/workspace/jbpmtest3/bin/aaa.b
Java.io包中的类,需要使用这种形式的参数。
但是,它们一般也提供了URI类型的参数,而URI类型的参数,接受的是URI样式的String。因此,通过URI转换,还是可以把URI样式的绝对路径用在java.io包中的类中。

三 相对于classpath的相对路径

如:
相对于file:/D:/java/eclipse32/workspace/jbpmtest3/bin/这个路径的相对路径。
其中,bin是本项目的classpath。所有的Java源文件编译后的.class文件复制到这个目录中。

四 相对于当前用户目录的相对路径

就是相对于System.getProperty("user.dir")返回的路径。

对于一般项目,这是项目的根路径。
对于JavaEE服务器,这可能是服务器的某个路径。
这个并没有统一的规范!所以,绝对不要使用"相对于当前用户目录的相对路径"。

然而:
默认情况下,java.io 包中的类总是根据当前用户目录来分析相对路径名。此目录由系统属性 user.dir 指定,通常是 Java 虚拟机的调用目录。
这就是说,在使用java.io包中的类时,最好不要使用相对路径。否则,虽然在J2SE应用程序中可能还算正常,但是到了J2EE程序中,一定会出问题!而且这个路径,在不同的服务器中都是不同的!

下面是我在学习过程中比较好的一种读取classpath文件的一个好方法:

import java.io.IOException;
import java.util.Properties;

import org.omg.CORBA.portable.InputStream;

public class D {
    private static Properties props = new Properties();

    public static String getUrl(String fileName, String key) {
        try {
            // 得到当前的classpath的绝对路径的URI表示法。
            java.io.InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName);
            // 读取Properties文件
            props.load(stream);
            return props.getProperty(key);
        } catch (IOException e) {
            e.printStackTrace();
            return "";
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,092评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,148评论 6 342
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,872评论 0 17
  • 踮起脚尖, 更能接近阳光。 易小峰篇 谢小艺给我打电话的时候,我正被困在四中房山校区长阳镇长泽南街。大雨已经没过了...
    月德阅读 3,698评论 7 4
  • 窗外新栽不久的树,在冬日的清晨站得倔强而孤独。空旷的荒芜里,不显突兀,反而像极了每个生命最无畏的坚持。你看到的站立...
    佳禾晏晏阅读 3,008评论 0 2

友情链接更多精彩内容