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

File can find the file but FileReader can't

我正在尝试读取 java 中的 .txt 文件。 我把文件放在项目的根文件夹中。

当我这样做时:

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

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

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

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

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

谁能帮帮我。

这里有两件事要尝试:

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

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

当您当前正在使用 File 时,在您实例化 Scanner 之前不会尝试访问它,因此在您点击该行代码之前它不会失败。

资源(Class.getResource)一般不能处理File,它们是class路径上的文件,可能打包在.jar文件中。你可以得到一个 reader 如下:

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

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

它起作用是一个工作目录问题,与您的 IDE 设置有关。