我已将.txt文件放置在包的文件夹内(紧靠.java文件),并具有以下代码。 Java说找不到该文件。
public static void qnaReader()
{
String fileName = "QNA.txt";
FileReader qna = new FileReader(fileName);
}
文件路径是否有特定格式?我在做什么错了?
答案 0 :(得分:2)
执行程序时,Java使用当前工作目录(bash中的$PWD
)解析相对路径(QNA.txt是该路径)。
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";