关于Properties文件读取的问题

fskjb01 2009-08-04 08:01:20

Properties prop=new Properties();
try {
FileInputStream fs=new FileInputStream("config.properties");
prop.load(fs);
System.out.println(prop.getProperty("cls1"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


以上代码出现异常:

java.io.FileNotFoundException: config.properties (系统找不到指定的文件。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at com.TestProperties.main(TestProperties.java:15)
...全文
356 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fskjb01 2009-08-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 feishare 的回复:]
你的类文件和properties文件要放同一个目录下或者在根目录下建个config目录,把配置文件放进去
[/Quote]

哇!这个强啊!!终于解决了,哈哈!!
feishare 2009-08-04
  • 打赏
  • 举报
回复
你的类文件和properties文件要放同一个目录下或者在根目录下建个config目录,把配置文件放进去
冰思雨 2009-08-04
  • 打赏
  • 举报
回复
如果文件是放在src文件夹下面的,
楼主可以尝试把FileInputStream fs=new FileInputStream("config.properties");
替换成InputStream fs = this.getClass().getResourceAsStream("config.properties");
lovecj6185 2009-08-04
  • 打赏
  • 举报
回复
楼主的类是不是打包了啊
要和包放在同一级目录下
临碣 2009-08-04
  • 打赏
  • 举报
回复 3
properties这东西,有点小麻烦。
读取路径这个玩艺是比较棘手的东西。

最简单的处理方式是在环境变量里面定义一个目录,然后把properties放在那个目录里面。在Java中读取环境变量,然后拼出来完整路径。
这个方法的问题在于发布比较麻烦,要控制系统来完成这些事情。

web应用可以把properties放在web应用路径下,可以通过文件或Http读取。问题在于这相当于对用户暴露程序配置,敏感数据不适合。

一般采用的办法是跟class文件放在一起package中。如果用File去读取,结果必然很惨痛。因为实际上class的路径不固定。所以File的方式是不适合读取package中的properties的。

如果选择了把properties文件放在package中,那么就用classloader的getResouseAsStream那组方法获得输入流。这个方法的好处是即便package是在jar中,也一样能够读取。确定是如果配置需要修改,那么在jar中不是很方便;而且需要控制classloader(并不是每个classloader都一样的,容器中,一般情况下,系统的和应用的读取的位置不同,所以需要控制一下,用那个,或者都用。)。但是作为产品或组件,其优势也是明显的,所以目前看到的大多数框架都是这么放properties的。(我没考察大多数到底是多少:))

楼主的这个方法是最恐怖的。没有任何路径限制。那么以为这文件在当前路径。当前路径,也就是启动路径。换句话说:假如文件在/opt/myproject/config/目录下,而启动路径是/home/user/,那么实际上是在/home/user/下找这个文件。启动路径,也就是运行程序时,控制台的当前路径。启动路径可以从system的getProperty()方法获得。
在eclipse下,启动路径默认是项目根路径。比如项目Demo在d:\workspace\Demo下,那么启动路径就是这个。


大致情况是这样的。细节楼主慢慢玩。
skyair2004 2009-08-04
  • 打赏
  • 举报
回复
我的意思是你的类文件和properties文件要放同一个目录下
要不你就按一楼的方法就可以了
fskjb01 2009-08-04
  • 打赏
  • 举报
回复
我的properties文件放在SRC目录中和放在包中都试过了,都不行.

文件名是复制粘贴的应该没有问题
skyair2004 2009-08-04
  • 打赏
  • 举报
回复
你的类文件和你刚才的代码保存的地方放同一个路径下就可以了
老紫竹 2009-08-04
  • 打赏
  • 举报
回复
new FileInputStream("config.properties");


这个文件你放错了位置,你可以考虑
1 放在项目的根上
2 用绝对路径,比如 c:/config.properties

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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