我有一个文本文件,我想从中读取,但我真的不知道如何从类路径导航到文件所在的路径。
public class Main {
public static void main(String[] args) {
URL fileURL = Main.class.getResource("resources/coding_qual_input.txt");
if (fileURL != null) {
File file = new File(fileURL.getFile());
try {
BufferedReader in = new BufferedReader(new FileReader(file));
}catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
}
我真的不知道文件是否正确,但现在
new FileReader(file)
让我明白了null
。
那么,为什么
FileReader
无法读取我的文件?
由于
Main.class.getResource("resources/coding_qual_input.txt")
导致file:/C:/Users/Jonas/IdeaProjects/Android%20ATC/pyramidDecoder/out/production/pyramidDecoder/resources/coding_qual_input.txt
,我不明白问题出在哪里。
我应该以某种方式沿着类路径导航吗?
感谢您的帮助!
好吧,正如我所怀疑的,文件夹名称中的空格 (%20) 似乎不太适合 URL,所以我重新创建了该行为并得到了
FileNotFoundException
(使用 Java 1.8)
使用
ClassLoader.getSystemResourceAsStream
一切正常,这里是:
public static void main(String[] args) throws IOException {
InputStream inputStream = ClassLoader.getSystemResourceAsStream("resources/coding_qual_input.txt");
if (inputStream != null) {
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
for (String line = in.readLine(); line != null; line = in.readLine()) {
System.out.println(line);
}
in.close();
inputStream.close();
}
}