Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查找Java从何处加载文件?_Java - Fatal编程技术网

查找Java从何处加载文件?

查找Java从何处加载文件?,java,Java,我只是想知道是否有一种方法可以找出java程序在哪里搜索文件 我正在尝试加载设置文件,其中FileInputStream fstream=newfileinputstream(“ldaplookup.ini”)但它正在抛出“未找到文件”错误。ini文件与类文件位于同一文件夹中,但我假设它正在其他地方搜索 谢谢,-PeteJava从当前工作目录加载文件以获得相对路径。如果要查看是什么,请尝试以下操作: System.out.println(System.getProperty("user.dir"

我只是想知道是否有一种方法可以找出java程序在哪里搜索文件

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


谢谢,-Pete

Java从当前工作目录加载文件以获得相对路径。如果要查看是什么,请尝试以下操作:

System.out.println(System.getProperty("user.dir"));
由于“
newfileinputstream(“ldaplookup.ini”);
”相当于“
newfileinputstream(“/ldaplookup.ini”);
”,您可以尝试:

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

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

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

读取随类分发的文件的一种更可靠的方法是使用—它将查找调用它的类所在的类路径中的目录,甚至当所有内容都打包在JAR文件中时,它也可以工作。

不是直接回答,而是一种有用的替代方法:

你可以用一个字母代替

并加载以下内容:

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


 String s = bundle.getString("url");
ResourceBundle在类路径中搜索.properties文件

等等等等

p、 美国

要了解程序的基本路径,请尝试(如前所述:)


谢谢,这里显示的是C:\Windows\System32,我觉得有点奇怪。有什么方法可以改变它查找文件的位置吗?或者,如果我只是把ini文件的绝对路径放进去会更好吗?实际上,对于要分发的实际程序,您希望使用相对路径。如何调用(命令行、ide等)?它是一个托管在web服务器上的servlet,由Post方法从web页面调用。好的,在这种情况下,您有两个选项。如果.ini文件是相当静态的,并且您希望将其与类一起分发,请参阅下面使用Class.getResourceAsStream()的Michael的响应。如果您希望独立地更改它,并且通常需要更改ini,请尝试在web服务器配置中设置servlet的工作目录。您应该改用Class.getResourceAsStream()方法;)好的方面是,当类位于jar中时,该方法也可以工作,因此它在IDE中或部署时也可以工作。
 ResourceBundle bundle = ResourceBundle.getBundle("ldaplookup");


 String s = bundle.getString("url");
System.out.println(new File("."));