我正在尝试用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也找不到该文件。
我不知道该怎么办,我已经尝试了很多东西。
有人可以帮我吗?
答案 0 :(得分:1)
资源(Class.getResource)通常不能用File
处理,它们是类路径上的文件,可能打包为.jar文件。您可以按如下方式获得读者:
new InputStreamReader(getClass().getResourceAsStream("/test.txt"), StandardCharsets.UTF_8)
上面使用了资源的InputStream。如您所知,该文件的字符集应为Reader指定。
它起作用了是一个工作目录问题,与您的IDE设置结合在一起。
答案 1 :(得分:0)
这里有两件事可以尝试:
使用完整路径而不是相对路径使用完整路径,例如类似于"/Users/BlueDragon709/Desktop/test.txt"
而不是"/test.txt"
如果失败,请检查文件权限。
当前使用文件时,除非实例化扫描程序,否则您不会尝试访问它,因此在您碰到该行代码之前,它不会失败。