You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何将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

火山引擎 最新活动