文件可以找到文件,但FileReader找不到

时间:2019-10-14 15:42:33

标签: java file filereader

我正在尝试用Java读取.txt文件。 我将文件放置在项目的根文件夹中。

当我这样做时:

URL url = getClass().getResource("/test.txt");
System.out.println(url);
File file = new File(url.getPath());
System.out.println(file.getAbsolutePath());

我得到了正确的路径。 但是当我想在FileReader中使用File时,找不到文件。

Scanner scan = new Scanner(new BufferedReader(new FileReader(file)));

即使我将测试文件放在桌面上并使用绝对路径,FileReader也找不到该文件。

我不知道该怎么办,我已经尝试了很多东西。

有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

资源(Class.getResource)通常不能用File处理,它们是类路径上的文件,可能打包为.jar文件。您可以按如下方式获得读者:

new InputStreamReader(getClass().getResourceAsStream("/test.txt"), StandardCharsets.UTF_8)

上面使用了资源的InputStream。如您所知,该文件的字符集应为Reader指定。

它起作用了是一个工作目录问题,与您的IDE设置结合在一起。

答案 1 :(得分:0)

这里有两件事可以尝试:

  1. 使用完整路径而不是相对路径使用完整路径,例如类似于"/Users/BlueDragon709/Desktop/test.txt"而不是"/test.txt"

  2. 如果失败,请检查文件权限。

当前使用文件时,除非实例化扫描程序,否则您不会尝试访问它,因此在您碰到该行代码之前,它不会失败。