You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:45:04