我只是想知道是否有办法找出java程序搜索文件的位置。
我正在尝试使用FileInputStream fstream = new FileInputStream("ldaplookup.ini");
加载设置文件,但它会抛出“找不到文件”错误。 ini文件与类文件位于同一文件夹中,但我假设它正在其他地方搜索。
谢谢,-Pete
答案 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("."));