Java File可以找到该文件,但FileReader可以';T
我正在尝试用java读取一个.txt文件。 我将文件放在项目的根文件夹中 当我这样做时:Java File可以找到该文件,但FileReader可以';T,java,file,filereader,Java,File,Filereader,我正在尝试用java读取一个.txt文件。 我将文件放在项目的根文件夹中 当我这样做时: URL=getClass().getResource(“/test.txt”); System.out.println(url); File File=新文件(url.getPath()); System.out.println(file.getAbsolutePath()); 我找到了正确的归路。 但是当我想在文件阅读器中使用该文件时,它找不到该文件 Scanner scan=new Scanner(n
URL=getClass().getResource(“/test.txt”);
System.out.println(url);
File File=新文件(url.getPath());
System.out.println(file.getAbsolutePath());
我找到了正确的归路。
但是当我想在文件阅读器中使用该文件时,它找不到该文件
Scanner scan=new Scanner(new BufferedReader(new FileReader(file));
即使我将测试文件放在桌面上并使用绝对路径,文件阅读器也找不到该文件
我不知道该怎么办,我试过很多东西
有人能帮我吗。这里有两件事可以尝试:
“/Users/BlueDragon709/Desktop/test.txt”
而不是“/test.txt”
文件
,它们是类路径上的文件,可能打包在.jar文件中。您可以按如下方式获得一个阅读器:
new InputStreamReader(getClass().getResourceAsStream("/test.txt"), StandardCharsets.UTF_8)
上面使用资源的InputStream。如您所知,请为读取器指定文件的字符集
与IDE的设置相结合,这是一个工作目录问题。
文件
表示一个抽象路径,并且很容易表示一个无效路径。您需要使用File.canRead()
来验证File
是否确实可以在那里找到某些内容。当我执行File.canRead()时,我会得到truegetClass()。getResource()仅适用于类路径中存在的文件。通常根目录不在类路径中。您应该记住,对于开发(src下的IDE)和生产(在JAR或WAR中),类路径可以不同。对于不在类路径中的文件,应使用正常的绝对或相对文件路径。还建议使用新的NIO接口路径而不是文件。