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

Java读取txt文件报FileNotFoundException未处理异常问题咨询

问题描述

编写Java程序尝试读取txt文件,将文件内容加载到二维数组中打印,持续触发FileNotFoundException相关报错。已核查文件路径,分别尝试配置绝对路径、相对路径,报错始终未变,目标文件cars.txt存放在项目src文件夹下。

问题代码
public class Main {
    public static void main (String[] args) {
      Scanner input = new Scanner(System.in);
      Scanner gimmiethetxtplz = new Scanner(new File("cars.txt"));
      int rows = input.nextInt();
      int columns = input.nextInt();
      String[][] cars = new String[rows][columns];
    
      for (int i = 0; i < rows; i++) {
         for (int j = 0; j < columns; j++) {
             cars[i][j] = gimmiethetxtplz.nextLine();
             System.out.print(cars[i][j] + " ");
                     }
               System.out.println();
              }
           input.close();
        }
     }
抛出的异常信息
Exception in thread "main" java.lang.Error: Unresolved compilation 
problem: 
Unhandled exception type FileNotFoundException

at training.Main.main(Main.java:9)
问题根因

这个报错不是运行时文件找不到导致的,是代码未通过编译的语法错误:
FileNotFoundException属于Java的受检异常(Checked Exception),语法强制要求开发者必须显式处理这类异常,要么在方法签名上通过throws声明抛出,要么通过try-catch块捕获处理。当前代码没有做任何异常处理,编译器直接拦截报错,和你配置的文件路径是否正确没有关系。

就算解决了编译问题,当前代码还有两个隐藏问题:

  • 文件路径配置错误:new File("cars.txt")默认读取的是程序工作目录(通常是项目根目录,和src文件夹同级)下的文件,你把文件放在src文件夹下,运行时还是会找不到文件
  • 输入流残留换行符:调用input.nextInt()读取行列数后,输入缓冲区会残留回车符,后续调用nextLine()读取文件内容时会读到空字符串,导致二维数组数据错位。
修复步骤
  • 解决编译期异常:简单测试场景下,直接在main方法上添加异常抛出声明即可,修改后方法签名为:
    public static void main (String[] args) throws FileNotFoundException {
    
    记得在文件头部补充缺失的导包语句:
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.util.Scanner;
    
  • 修正文件路径:要么把cars.txt从src文件夹移动到项目根目录,要么把文件路径修改为"src/cars.txt"匹配当前存放位置
  • 修复输入流错位问题:在读取完rows和columns两个整数后,添加一行input.nextLine()消费掉缓冲区残留的换行符,避免后续读取内容为空。

内容的提问来源于stack exchange,提问作者Costantino Tessera

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:24:16