大神进,菜鸟请勿打扰

Properties p=new Properties();

第一种方法: p.load(new FileInputStream("database.properties"));
第二种方法: p.load(BaseDao.class.getClassLoader().getResourceAsStream("database.properties"));

第一种方法会报错
java.io.FileNotFoundException: database.properties (系统找不到指定的文件。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.(Unknown Source)
at java.io.FileInputStream.(Unknown Source)
at com.Pet.Tool.BaseDao.bb(BaseDao.java:28)
at com.Pet.Tool.BaseDao.(BaseDao.java:21)
at com.Pet.text.text.main(text.java:14)
第二种方法则可以通过

请教:俩种方法的区别?? 为什么第一种方法会报错???请教大神

3个回答

第一次见到问问题这么牛B的,萌新瑟瑟发抖中
图片说明

dasgjhbb
dasgjhbb 很感谢你,但你的回答和我的问题不对接,,
大约 2 年之前 回复
public FileInputStream(String name) throws FileNotFoundException {
    this(name != null ? new File(name) : null);
}

这是FileInputStream的底层代码,你可以看到,你new FileInputStream时,他会调用new File,创建一个新的File ,这个File是以你的name为路
径进行创建的,并不是你原来的properties文件,你把name改成相对路径试下,如果对了,也有可能找不见内容,因为是新的文件。
我也是菜鸟,如果不对还望海涵,错误之处帮忙指出。
下面是new File的底层
public File(String pathname) {
if (pathname == null) {
throw new NullPointerException();
}
this.path = fs.normalize(pathname);
this.prefixLength = fs.prefixLength(this.path);
}

dasgjhbb
dasgjhbb 谢谢你,,虽然道理我还是不太懂,可能我基础还差吧,但你的回答解决了我的的目前问题,,,谢谢了大神!
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!