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

使用Java Scanner读取CSV文件失败且无异常抛出,求修复方案

Java读取CSV文件无输出无异常的修复方案

问题重现

用户使用以下Java代码读取CSV文件时,程序无输出且未抛出异常,但此前读取bds文件正常:

import java.util.*;
import java.io.File;
import java.io.FileNotFoundException;

class Flight {
    public static void main(String[] args) throws Exception {
        Flight x = new Flight();
        x.data();
    }

    public void data() throws Exception {

        File fn = new File("ChinaAirLine.csv");
        Scanner obj = new Scanner(fn);
        while (obj.hasNextLine()) {
            System.out.println(obj.nextLine());
        }
        obj.close();
    }
}

修复方案

1. 确认文件路径正确性

  • 相对路径"ChinaAirLine.csv"指向程序运行的工作目录(非源码目录),可通过以下代码打印实际路径,验证文件是否存在:
    System.out.println(new File("ChinaAirLine.csv").getAbsolutePath());
    
  • 若文件不在工作目录,改用绝对路径,例如:
    File fn = new File("D:/your-project-path/ChinaAirLine.csv");
    

2. 指定文件编码

Scanner默认使用平台编码,若CSV文件编码(如UTF-8、GBK)与平台编码不一致,会导致读取异常或无输出。修改Scanner初始化代码,指定对应编码:

Scanner obj = new Scanner(fn, "UTF-8"); // 替换为文件实际编码

3. 完善异常捕获

原代码直接抛出异常,若运行环境未输出异常信息,无法排查问题。改为手动捕获并打印详细错误:

public void data() {
    try {
        File fn = new File("ChinaAirLine.csv");
        Scanner obj = new Scanner(fn, "UTF-8");
        if (!obj.hasNextLine()) {
            System.out.println("文件为空或无有效内容");
        }
        while (obj.hasNextLine()) {
            System.out.println(obj.nextLine());
        }
        obj.close();
    } catch (FileNotFoundException e) {
        System.err.println("错误:文件未找到 - " + e.getMessage());
        e.printStackTrace();
    } catch (Exception e) {
        System.err.println("错误:读取失败 - " + e.getMessage());
        e.printStackTrace();
    }
}

4. 检查文件本身

手动打开ChinaAirLine.csv,确认文件不为空、无损坏,且包含可读取的文本内容。

修改后的完整代码

import java.util.*;
import java.io.File;
import java.io.FileNotFoundException;

class Flight {
    public static void main(String[] args) {
        Flight x = new Flight();
        x.data();
    }

    public void data() {
        try {
            File fn = new File("ChinaAirLine.csv");
            // 打印文件绝对路径,验证位置是否正确
            System.out.println("文件路径:" + fn.getAbsolutePath());
            Scanner obj = new Scanner(fn, "UTF-8");
            
            if (!obj.hasNextLine()) {
                System.out.println("提示:文件为空或无有效行");
            }
            
            while (obj.hasNextLine()) {
                System.out.println(obj.nextLine());
            }
            obj.close();
        } catch (FileNotFoundException e) {
            System.err.println("错误:文件未找到 - " + e.getMessage());
            e.printStackTrace();
        } catch (Exception e) {
            System.err.println("错误:读取失败 - " + e.getMessage());
            e.printStackTrace();
        }
    }
}

内容的提问来源于stack exchange,提问作者黃祥瑋

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:23:12