Java:为什么我的代码读取存储的是文件路径而非文件实际内容?
错误根因
你调用Scanner构造方法时传入的参数类型错误,触发了错误的重载逻辑:
new File(fileName).getAbsolutePath()返回的是字符串类型的文件路径Scanner类存在接收String参数的重载,作用是直接读取该字符串本身的内容,而非把字符串当成文件路径去读取对应文件的内容,所以最终存入ArrayList的就是路径字符串本身的拆分内容。
修复方案
直接把File对象传给Scanner即可,不需要调用getAbsolutePath(),正确代码如下:
text = new MyArrayList<>(); try (Scanner s = new Scanner(new File(fileName))) { while (s.hasNext()) { text.add(s.next()); } }
如果需要明确指定文件编码避免乱码,可以传入编码参数:
try (Scanner s = new Scanner(new File(fileName), StandardCharsets.UTF_8.name())) { // 读取逻辑不变 }
内容的提问来源于stack exchange,提问作者Liferafter
相关产品推荐
相关产品推荐

