如何将TXT文件数据导入已创建的ArrayList(关联JTable读写)
将TXT文件数据导入
ArrayList<Documentos>的实现方案 嗨,你已经搞定JTable和TXT文件的读写功能了,现在要把TXT里的数据转存到ArrayList<Documentos>里对吧?我来帮你调整代码,让这个需求落地~
首先得确认你的Documentos类结构,假设你的TXT文件每行是用空格分隔的多段字段(比如对应文档的ID、名称、类型这类属性),那Documentos类得有对应的属性和构造方法(或Setter方法)。举个简单的Documentos示例:
public class Documentos { private String id; private String nombre; private String tipo; // 对应字段的构造方法 public Documentos(String id, String nombre, String tipo) { this.id = id; this.nombre = nombre; this.tipo = tipo; } // 可选:添加Getter/Setter方法用于后续操作 public String getId() { return id; } public void setId(String id) { this.id = id; } // 其他属性的Getter/Setter同理 }
接下来咱们修改你的导入代码,在读取TXT每行数据时,创建Documentos对象并加入ArrayList:
// 初始化目标集合 ArrayList<Documentos> documentos = new ArrayList<>(); String filePath = "C:\\Users\\ellim\\Desktop\\TitanPanel\\TitanPanel.txt"; File file = new File(filePath); try { FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); DefaultTableModel model = (DefaultTableModel) tbl_panels.getModel(); // 可选:清空原有数据(根据业务需求决定) model.setRowCount(0); documentos.clear(); String line; // 逐行读取,比toArray()更灵活,还能跳过空行 while ((line = br.readLine()) != null) { if (line.trim().isEmpty()) continue; // 按空格分割每行数据,若字段含空格建议换分隔符(如逗号、制表符\t) String[] rowData = line.split(" "); // 把分割后的数据封装成Documentos对象,注意字段顺序要匹配构造方法 // 假设每行有3个字段,对应id、nombre、tipo if (rowData.length == 3) { // 加判断避免数组越界 Documentos doc = new Documentos(rowData[0], rowData[1], rowData[2]); documentos.add(doc); // 同时保留JTable导入逻辑(如果需要) model.addRow(rowData); } } br.close(); fr.close(); } catch (FileNotFoundException ex) { Logger.getLogger(PanelTable.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(PanelTable.class.getName()).log(Level.SEVERE, null, ex); }
几个实用提示:
- 分割符优化:如果TXT字段可能包含空格,别用
" "分割,换成逗号、制表符这类不会出现在字段里的分隔符,比如split("\\t")或split(",")。 - 自动关流:可以用try-with-resources语法简化资源管理,不用手动调用
close():try (FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr)) { // 读取逻辑放在这里,流会自动关闭 } catch (IOException ex) { Logger.getLogger(PanelTable.class.getName()).log(Level.SEVERE, null, ex); } - 异常处理:可以在捕获异常时添加用户提示(比如弹窗),让程序更友好。
这样修改后,TXT里的每一行数据都会被封装成Documentos对象,存入你的documentos集合里啦~
内容的提问来源于stack exchange,提问作者ignacio




