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 也找不到该文件。
我不知道该怎么办,我试了很多东西。
谁能帮帮我。
这里有两件事要尝试:
使用完整路径而不是使用相对路径使用完整路径,例如像 "/Users/BlueDragon709/Desktop/test.txt"
而不是 "/test.txt"
如果失败请检查文件权限。
当您当前正在使用 File 时,在您实例化 Scanner 之前不会尝试访问它,因此在您点击该行代码之前它不会失败。
资源(Class.getResource)一般不能处理File
,它们是class路径上的文件,可能打包在.jar文件中。你可以得到一个 reader 如下:
new InputStreamReader(getClass().getResourceAsStream("/test.txt"), StandardCharsets.UTF_8)
上面使用了资源的InputStream。如您所知文件的字符集,请将其指定为 Reader.
它起作用是一个工作目录问题,与您的 IDE 设置有关。
我正在尝试读取 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 也找不到该文件。
我不知道该怎么办,我试了很多东西。
谁能帮帮我。
这里有两件事要尝试:
使用完整路径而不是使用相对路径使用完整路径,例如像
"/Users/BlueDragon709/Desktop/test.txt"
而不是"/test.txt"
如果失败请检查文件权限。
当您当前正在使用 File 时,在您实例化 Scanner 之前不会尝试访问它,因此在您点击该行代码之前它不会失败。
资源(Class.getResource)一般不能处理File
,它们是class路径上的文件,可能打包在.jar文件中。你可以得到一个 reader 如下:
new InputStreamReader(getClass().getResourceAsStream("/test.txt"), StandardCharsets.UTF_8)
上面使用了资源的InputStream。如您所知文件的字符集,请将其指定为 Reader.
它起作用是一个工作目录问题,与您的 IDE 设置有关。