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

如何使用BufferedReader读取文件内容并填充二维数组

实现方案

核心逻辑

你可以直接基于你熟悉的BufferedReader实现,整体步骤非常清晰:

  • 先读取文件前两行,转换为整数后分别作为二维数组的行数、列数
  • 初始化对应大小的二维数组
  • 按行优先的顺序,逐行读取剩余文件内容,转换为整数后依次填入数组对应位置
  • 整个过程做好异常处理,覆盖文件不存在、内容格式非法、数据长度不足等边界情况

注意点

  • 读取过程中可以跳过空行,避免文件里的空内容导致报错
  • 要校验实际读取到的有效数字总数是否等于行数*列数,避免数组越界
  • 内容转整数前先做trim处理,避免行前后的空格、换行符影响转换

完整Java实现代码

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class FileTo2DArray {
    public static void main(String[] args) {
        // 替换为你的实际文件路径
        String file_path = "test_data.txt";
        int[][] twoDArray = null;

        // 用try-with-resources自动关闭流,不用手动写close逻辑
        try (BufferedReader br = new BufferedReader(new FileReader(file_path))) {
            // 读取行列数
            int rows = Integer.parseInt(br.readLine().trim());
            int cols = Integer.parseInt(br.readLine().trim());
            twoDArray = new int[rows][cols];

            // 按行优先填充数组
            for (int i = 0; i < rows; i++) {
                for (int j = 0; j < cols; j++) {
                    String line = br.readLine();
                    // 跳过空行
                    while (line != null && line.trim().isEmpty()) {
                        line = br.readLine();
                    }
                    if (line == null) {
                        throw new RuntimeException("文件内容长度不足,无法填充完整二维数组");
                    }
                    twoDArray[i][j] = Integer.parseInt(line.trim());
                }
            }

            // 测试:打印数组验证结果
            System.out.println("生成的二维数组如下:");
            for (int i = 0; i < rows; i++) {
                for (int j = 0; j < cols; j++) {
                    System.out.print(twoDArray[i][j] + "\t");
                }
                System.out.println();
            }

        } catch (IOException e) {
            System.err.println("文件读取失败:" + e.getMessage());
        } catch (NumberFormatException e) {
            System.err.println("内容格式错误,无法转换为数字:" + e.getMessage());
        } catch (RuntimeException e) {
            System.err.println("逻辑错误:" + e.getMessage());
        }
    }
}

用你提供的测试文件运行上述代码,会生成4行5列的二维数组,和预期要求一致。如果后续需要做数据对比,直接基于生成的twoDArray操作即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:24:04