Java 我使用什么路径来获取文件读取器来读取.txt文件?

Java 我使用什么路径来获取文件读取器来读取.txt文件?,java,file,Java,File,我已经将我的.txt文件放在包的文件夹中(就在.java文件的旁边),并获得了以下代码。Java说找不到该文件 public static void qnaReader() { String fileName = "QNA.txt"; FileReader qna = new FileReader(fileName); } 文件路径是否有特定格式?我做错了什么?当您执行程序时,Java使用当前工作目录($PWD在bash中)解析相对路径(即QNA

我已经将我的.txt文件放在包的文件夹中(就在.java文件的旁边),并获得了以下代码。Java说找不到该文件

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

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

当您执行程序时,Java使用当前工作目录(
$PWD
在bash中)解析相对路径(即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)) {
    ... 
  }
}

当您执行程序时,Java将使用当前工作目录解析相对路径(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)) {
    ... 
  }
}

对于应用程序读取文件(几乎任何文件),有两种方法:

第一种方法

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

第二种方法

根据应用程序看到的当前工作目录提供相对路径。也就是说,如果从名为“foo”的目录或文件夹运行应用程序,那么文本文件必须位于该目录中,以便提供相对路径,即文件名
QNA.txt


希望这个答案对您有用。

对于您的应用程序读取文件(几乎任何文件),您有两种方法:

第一种方法

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

第二种方法

根据应用程序看到的当前工作目录提供相对路径。也就是说,如果从名为“foo”的目录或文件夹运行应用程序,那么文本文件必须位于该目录中,以便提供相对路径,即文件名
QNA.txt


希望您觉得这个答案很有用。

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

此外,您还可以提供绝对路径(不推荐),如下所示:


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

此外,您还可以提供绝对路径(不推荐),如下所示:


您需要将文件添加到
src
文件夹(相对路径)下,或使用绝对路径。如果您不能再将其作为
文件访问,它将成为嵌入式源。使用
Class#getResource
Class#getresourceastream
访问它。该路径将与用于查找任何程序资源的
包相关。对于任何语言的程序,默认工作目录是程序运行的地方。如果要访问另一个目录中的文件,必须使用相对路径或绝对路径。您需要将文件添加到
src
文件夹(相对路径)下,或使用绝对路径。您不能再将其作为
文件
访问,它将成为嵌入式源代码。使用
Class#getResource
Class#getresourceastream
访问它。该路径将与用于查找任何程序资源的
包相关。对于任何语言的程序,默认工作目录是程序运行的地方。如果要访问另一个目录中的文件,必须使用相对路径或绝对路径。