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

Java新手求助:如何将文本文件内容存入数组

嘿,刚学Java碰到文件读写和数组结合的问题很正常,我来帮你搞定~

问题分析与解决方案

先看看你现有代码里的几个关键问题:

  • 没有处理Scanner初始化失败的极端情况:如果文件找不到,in会是null,直接调用in.nextLine()会触发空指针异常
  • 完全没创建用来存储数据的数组,这当然没法把文件内容存进去啦
  • 循环逻辑没写完,也没有读取文件内容并写入数组的代码

下面是修正后的完整可运行代码,每一步都加了注释说明:

import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;

public class FileToArrayDemo {
    public static void main(String[] args ) { 
        Scanner in = null; 
        try { 
            // 初始化Scanner读取文件
            in = new Scanner(new FileReader("input.txt")); 
            // 读取第一行的用例数量
            int numCases = Integer.parseInt(in.nextLine()); 
            // 根据用例数量创建对应长度的数组(这里假设存字符串,存数字就改成int[])
            String[] dataArray = new String[numCases];

            // 循环读取每一行数据存入数组
            for(int i = 0; i < numCases; i++) {
                // 先检查是否还有下一行数据,避免文件内容不足时报错
                if(in.hasNextLine()) {
                    dataArray[i] = in.nextLine();
                } else {
                    // 处理文件内容不够的情况,给个提示并设默认值
                    System.out.println("提示:文件内容不足,缺少第" + (i+1) + "条数据");
                    dataArray[i] = "";
                }
            }

            // 验证:打印数组里的内容,确认是否存储成功
            System.out.println("已存入数组的内容:");
            for(String item : dataArray) {
                System.out.println(item);
            }

        } catch(IOException e) { 
            // 捕获文件读取异常,打印错误信息
            e.printStackTrace(); 
        } finally {
            // 无论是否出错,都要关闭Scanner释放资源
            if(in != null) {
                in.close();
            }
        }
    }
}

额外注意事项

  • 如果你的文件里存储的是整数,把数组类型改成int[] dataArray = new int[numCases];,读取时用dataArray[i] = Integer.parseInt(in.nextLine());即可
  • 务必在finally块关闭Scanner,避免资源泄漏
  • 加上hasNextLine()的判断很重要,能避免因文件实际行数少于指定的numCases而抛出异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:24:37