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)

解决方案 »

  1.   

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

  2.   

    我的properties文件放在SRC目录中和放在包中都试过了,都不行.文件名是复制粘贴的应该没有问题
      

  3.   

    我的意思是你的类文件和properties文件要放同一个目录下
    要不你就按一楼的方法就可以了
      

  4.   

    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下,那么启动路径就是这个。
    大致情况是这样的。细节楼主慢慢玩。
      

  5.   

    如果文件是放在src文件夹下面的,
    楼主可以尝试把FileInputStream fs=new FileInputStream("config.properties");
    替换成InputStream fs = this.getClass().getResourceAsStream("config.properties");
      

  6.   

    你的类文件和properties文件要放同一个目录下或者在根目录下建个config目录,把配置文件放进去