我有一个初始化文件(initialize.java),它使用fileInputStream从fileInput.txt中提取数据,但它们都位于不同的目录中。
Project/library/initialize.java Project/resources/text/fileInput.txt
我在initialize.java中的代码是:
FileInputStream fstream = new FileInputStream("/resources/text/fileInput.txt");
但是文件无法读取。我也试过了
FileInputStream fstream = new FileInputStream("./resources/text/fileInput.txt");
但这也行不通。
如何访问txt文件以及使用“./resources”和“/ resources”之间的区别是什么?
感谢您阅读本文。
答案 0 :(得分:5)
差异很大。在linux / unix / macos上以/从根目录开始的路径。以./开头或不从当前应用程序目录开始的路径。呼叫
System.out.println(new File("."). getAbsolutePath())
检查你的位置?
答案 1 :(得分:2)
FileInputStream fstream = new FileInputStream(“resources / text / fileInput.txt”);
试过这个?
答案 2 :(得分:2)
"./resources/text/fileInput.txt"
或"resources/text/fileInput.txt"
有效,
但"/resources/text/fileInput.txt"
没有。
注意:如果名为“resources”的文件夹位于项目的根目录下,则此选项有效。
答案 3 :(得分:1)
正如其他答案所示,传递给FileInputStream的路径取决于操作系统,也取决于路径是相对路径还是绝对路径。另一种读取文件的方法是使用Class.getResourceAsStream()
代替。 e.g。
InputStream = this.getClass()。的getResourceAsStream( “/资源/文本/ fileInput.txt”)
要使上述工作正常,您需要在类路径中拥有/resources
的父文件夹。有关getResourceAsStream如何工作的更多信息,请参阅SO question