【问题标题】:Selecting a file in another directory for a bufferedReader为 bufferedReader 选择另一个目录中的文件
【发布时间】:2012-03-29 14:35:30
【问题描述】:

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

感谢您阅读本文。

【问题讨论】:

  • 感谢大家的帮助。我意识到这是我的大错,但至少我学会了“./”目录的东西:)

标签: java directory bufferedreader fileinputstream


【解决方案1】:

差别很大。在// 上,以 / 开头的路径从根目录开始。以 ./ 开头或不从当前应用程序目录开始的路径。打电话

System.out.println(new File("."). getAbsolutePath())查看你在哪里?

【讨论】:

  • 愚蠢的我.. 我做了绝对路径的事情,发现它实际上是 Project/src/library,我不得不做一个“new FileInputStream("src/resources/...") 谢谢你!!
  • 也许问题是资源是你在资源中的根文件夹。所以试试InputStream in = ClassLoader.getResourceAsStream("/text/fileInput.txt")InputStream in = ClassLoader.getResourceAsStream("text/fileInput.txt"),我从来不知道:)。现在根是你的类路径根。
【解决方案2】:

FileInputStream fstream = new FileInputStream("resources/text/fileInput.txt");

试过了吗?

【讨论】:

    【解决方案3】:

    "./resources/text/fileInput.txt""resources/text/fileInput.txt" 有效, 但"/resources/text/fileInput.txt" 没有。

    注意:如果名为“resources”的文件夹位于项目的根目录下,则此设置有效。

    【讨论】:

      【解决方案4】:

      正如其他答案所暗示的,您传递给 FileInputStream 的路径取决于操作系统,以及该路径是相对路径还是绝对路径。另一种读取文件的方法是改用Class.getResourceAsStream()。例如

      输入流是 = this.getClass().getResourceAsStream("/resources/text/fileInput.txt")

      要使上述操作生效,您需要在类路径中有/resources 的父文件夹。有关 getResourceAsStream 工作原理的更多信息,请参阅SO question

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-07
        • 2020-06-03
        • 1970-01-01
        • 2018-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多