java读取properties配置文件的问题

文景大大 2015-01-07 10:22:27
在网上搜索java如何读取properties配置文件,大概有两种方法:
1.第一种
public class Demo1 {

public void createBase(){
Properties p = new Properties();
try {
InputStream in = new FileInputStream("dbparam.properties");
p.load(in);
System.out.println("6");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这种方法怎么试都不行,抛出无法找到文件的异常

2.第二种
public class Demo1 {

public void createBase(){
Properties p = new Properties();
InputStream in = this.getClass().getClassLoader()
.getResourceAsStream("dbparam.properties");
try {
p.load(in);
System.out.println("6");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这种方法就正常了,现在想问下第一种方法为什么不行?这两种方法有什么区别和用法需要注意的吗?
...全文
242 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
疯狂熊猫人 2015-01-13
  • 打赏
  • 举报
回复
出现无法读取文件,将该文件的路径打印出来看一下就知道原因了! 如你的第一种方法其实等价于InputStream in = new FileInputStream(new File("dbparam.properties")); 将这里的file的路径打印出来一看就明了!
文景大大 2015-01-08
  • 打赏
  • 举报
回复
配置文件就是放在src目录下的呀,后来请教别人,说叫我这样写: try { InputStream in = Object.class.getResourceAsStream("dbparam.properties"); p.load(in); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } 如此就能解决问题了! 注:该方式是在静态方法中的
姜小白- 2015-01-07
  • 打赏
  • 举报
回复
第一种方法,你把配置文件放到跟src 同目录的工程根目录下面就可以了
Runner6587 2015-01-07
  • 打赏
  • 举报
回复
这应该就是路径问题吧! name - the system-dependent file name.第一个FileInputStream的构造方法中name参数说明系统相关的文件名,是不是说要是绝对路径名啊? 第二种类加载器方式,一个项目中的所有类文件都要加载到JVM中才能运行,类加载器就是做这件事!既然class文件都可以加载,当然普通文件也可以加载!用这种方式会在项目中寻找所要加载的文件! name - The resource name name参数只是说资源名称,并不是像第一种说的系统相关文件
tony4geek 2015-01-07
  • 打赏
  • 举报
回复
2种方式读取路径的方法不一样。this.getClass().getClassLoader() 这个你上网查查。
Inhibitory 2015-01-07
  • 打赏
  • 举报
回复
第一种把dbparam.properties放在Java文件编译出来的class的顶级目录下。

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧