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