如何使用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
相关产品推荐
相关产品推荐

