Java如何将.txt文件中的信息拆分存储为多个字符串与变量
解决方法
你只需要按行号匹配规则分别处理每一行内容即可,原有代码存在首次读取第一行后直接进入循环丢弃第一行的问题,修正后的实现如下:
完整代码
private void readFile(String fileName) { // 定义对应存储变量 int zooNumber = 0; int animalNumber = 0; StringBuilder animalMatrix = new StringBuilder(); int dogNumber = 0; int dogAppetite = 0; int dogWeight = 0; int dogHeight = 0; // 用try-with-resources自动关闭IO流,避免资源泄漏 try (BufferedReader bufferedReader = new BufferedReader(new FileReader("myData.txt"))) { String line; int lineNum = 1; while ((line = bufferedReader.readLine()) != null) { // 去除首尾空字符,跳过空行 line = line.trim(); if (line.isEmpty()) { continue; } String[] parts = line.split("\\s+"); switch (lineNum) { // 第1行:动物园编号、动物数量 case 1: zooNumber = Integer.parseInt(parts[0]); animalNumber = Integer.parseInt(parts[1]); break; // 第2-5行:动物矩阵数据 case 2: case 3: case 4: case 5: animalMatrix.append(line).append("\n"); break; // 第6行:dog相关属性 case 6: dogNumber = Integer.parseInt(parts[1]); dogAppetite = Integer.parseInt(parts[2]); dogWeight = Integer.parseInt(parts[3]); dogHeight = Integer.parseInt(parts[4]); break; default: // 超出约定行号可自行扩展处理逻辑 break; } lineNum++; } // 测试输出验证结果 System.out.println("动物园编号:" + zooNumber); System.out.println("动物数量:" + animalNumber); System.out.println("动物矩阵数据:\n" + animalMatrix); System.out.println("狗编号:" + dogNumber); System.out.println("狗食量:" + dogAppetite); System.out.println("狗体重:" + dogWeight); System.out.println("狗身高:" + dogHeight); } catch (IOException e) { System.out.println("文件读取异常:" + e.getMessage()); } }
逻辑说明
- 按行号匹配规则处理对应内容,
lineNum变量从1开始计数,和需求里的行号完全对应,不易出错 - 用
split("\\s+")拆分字符串,适配多个空格、制表符分隔的场景,兼容性更强 - 矩阵数据拼接时保留换行符,和原文件格式完全一致
- try-with-resources语法会在执行完成后自动关闭流,不需要手动编写close逻辑,避免异常场景下的资源泄漏
内容的提问来源于stack exchange,提问作者user13971133
相关产品推荐
相关产品推荐

