找到Java加载文件的位置?

时间:2009-06-24 15:49:24

标签: java

我只是想知道是否有办法找出java程序搜索文件的位置。

我正在尝试使用FileInputStream fstream = new FileInputStream("ldaplookup.ini");加载设置文件,但它会抛出“找不到文件”错误。 ini文件与类文件位于同一文件夹中,但我假设它正在其他地方搜索。

谢谢,-Pete

5 个答案:

答案 0 :(得分:5)

Java从当前工作目录加载文件以获取相对路径。如果你想看看是什么,试试这个:

System.out.println(System.getProperty("user.dir"));

答案 1 :(得分:5)

由于“new FileInputStream("ldaplookup.ini");”相当于“new FileInputStream("./ldaplookup.ini");”,您可以尝试:

System.out.println(new File(".").getAbsolutePath());

答案 2 :(得分:5)

FileInputStream相对于执行路径查找文件。如果资源文件与类位于同一文件夹中,则可以尝试使用:

InputStream stream = this.getClass().getResourceAsStream("ldaplookup.ini");

答案 3 :(得分:3)

读取随类传递的文件的一种更可靠的方法是使用Class.getResourceAsStream() - 它将查找类路径中您正在调用它的类所在的目录,它将会甚至可以在所有内容都打包在JAR文件中时工作。

答案 4 :(得分:1)

不是直接回答,而是一个有用的选择:

您可以使用resource bundle代替。

 rename ldaplookup.ini to ldaploopup.properties

并加载:

 ResourceBundle bundle = ResourceBundle.getBundle("ldaplookup");


 String s = bundle.getString("url");

other strategies中的.properties文件的类路径中搜索ResourceBundle。

等。等。

P.S。

要知道程序尝试的基本路径是什么(如前所述:)

System.out.println(new File("."));