为bufferedReader选择另一个目录中的文件

时间:2012-03-13 07:25:39

标签: java directory bufferedreader fileinputstream

我有一个初始化文件(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”之间的区别是什么?

感谢您阅读本文。

4 个答案:

答案 0 :(得分:5)

差异很大。在 / / 上以/从根目录开始的路径。以./开头或不从当前应用程序目录开始的路径。呼叫

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