我的.txt文件使用什么路径来获取FileReader进行读取?

时间:2018-10-06 10:28:24

标签: java file

我已将.txt文件放置在包的文件夹内(紧靠.java文件),并具有以下代码。 Java说找不到该文件。

public static void qnaReader()
    {
        String fileName = "QNA.txt";
        FileReader qna = new FileReader(fileName);
    }

文件路径是否有特定格式?我在做什么错了?

3 个答案:

答案 0 :(得分:2)

执行程序时,Java使用当前工作目录(bash中的$PWD)解析相对路径(QNA.txt是该路径)。

  • 您需要将工作目录更改为包含Java文件的文件夹的目录
  • 您也可以使用Class::getResourceAsStream,如果找不到该资源,则可能返回null

您可以阅读getResourceAsStream的Javadoc来解释其功能和方式。

InputStream is = YourClass.class.getResourceAsStream("QNA.txt");
if (null != is) {
  try (InputStreamReader isr = new InputStreamReader(is, StandardCharsets.UTF_8); 
       BufferedReader reader = new BufferedReader(isr)) {
    ... 
  }
}

答案 1 :(得分:2)

要让您的应用程序读取文件(几乎可以读取任何文件),您有两种方法可以做到:

第一种方法

提供完整路径。例如:/home/oOVOo/QNA.txt。如果您正在运行Windows:D:/folder/QNA.txt。在Windows上指定路径时可以使用/。 JVM读取路径并根据基础操作系统决定使用哪个分隔符。

第二种方法

根据应用程序看到的当前工作目录提供相对路径。这意味着,如果要从名为“ foo”的目录或文件夹中运行应用程序,则文本文件必须位于该目录中,以便提供相对路径,该相对路径即为文件名QNA.txt。 / p>

希望您发现此答案有用。

答案 2 :(得分:1)

在提供的示例中,您使用相对文件路径。如果在类路径的“底部”或从中运行应用程序的目录中查找文件,则这是相关的。例如。在maven项目中,您可以将文件放置在“ src / main / resources”目录中,并且上面的代码应该可以成功找到它。

您还可以提供一个绝对路径(不建议使用):

String fileName = "/home/myUser/QNA.txt";