如何从文件读取内容创建Room类对象?已用BufferedReader分割内容
解决方案
先修正你代码里的变量名错误——你把BufferedReader实例命名为myfile,但读取时却调用了thefile.readLine(),后面还用到未定义的file,这会直接触发编译报错。
接下来按你的需求实现Room对象的创建逻辑:
- 分割后的数组中,
array[2]就是Room构造方法需要的描述文本 - 可以用
Map<String, Room>来存储创建好的对象,用array[1](比如示例里的home)作为键,方便后续通过标识名快速获取对象 - 增加格式校验和异常处理,避免文件行格式错误或IO问题导致程序崩溃
修正后的完整代码如下:
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.HashMap; import java.util.Map; public class RoomLoader { public static void main(String[] args) { // 存储Room对象,键为房间标识(如home) Map<String, Room> roomMap = new HashMap<>(); String filePath = "你的实际文件路径"; // 替换成你的文件路径 // try-with-resources自动关闭流,避免资源泄漏 try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) { String line; while ((line = reader.readLine()) != null) { String[] parts = line.split(","); // 校验行格式是否符合预期 if (parts.length >= 3) { String roomKey = parts[1].trim(); String roomDesc = parts[2].trim(); // 创建Room对象并存入Map Room room = new Room(roomDesc); roomMap.put(roomKey, room); } else { System.err.println("无效的文件行:" + line); } } // 测试获取对象 Room home = roomMap.get("home"); if (home != null) { System.out.println(home.getDescription()); } } catch (IOException e) { e.printStackTrace(); } } } // 假设你的Room类定义如下 class Room { private String description; public Room(String description) { this.description = description; } public String getDescription() { return description; } }
核心说明:
- 用
try-with-resources语法管理IO流,无需手动关闭资源 - 增加格式校验,防止文件中出现不符合
类型,标识,描述格式的行引发数组越界 - 通过Map存储对象,能灵活通过标识名调用对应Room实例
内容的提问来源于stack exchange,提问作者First_1st
相关产品推荐
相关产品推荐

