【问题标题】:Write text file content into custom arraylist in Java将文本文件内容写入 Java 中的自定义数组列表
【发布时间】:2015-06-15 01:08:20
【问题描述】:

假设我有一个文本文件 DataBase.txt,其内容如下:

1    leo               messi              12.12.1986
2    cristiano         ronaldo            22.01.1985
3    arjen             robben             14.11.1991

还有一个如下所示的自定义数组列表:

public static ArrayList<Rows> InfoList = new ArrayList<Rows>();

这是我的 Rows 类实现,带有 setter、getter 和 toString 方法:

public class Rows {

    public int id;
    public String firstName;
    public String secondName;
    public String dateOfbrth;

    @Override
    public String toString() {
        return this.id + "      " + this.firstName + "      " + 
                this.secondName + "      " + this.dateOfbrth;
    }

    public int getId() {
        return id;
    }
    public String getFirstName() {
        return firstName;
    }
    public String getSecondName() {
        return secondName;
    }
    public String getDateOfbrth() {
        return dateOfbrth;
    }
    public void setId(int id) {
        this.id = id;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public void setSecondName(String secondName) {
        this.secondName = secondName;
    }
    public void setDateOfbrth(String dateOfbrth) {
        this.dateOfbrth = dateOfbrth;
    }
}

所以。问题是:如何将文本文件内容写入 arrayList,其中每个元素都将被引用到类 Rows 中自己的字段。尽管每行中的空格数不同?哪些算法或 Java 类将有助于解决这个问题?

我是 Java 新手,所以我尝试使用 BuffredReader 来做到这一点,但我坚持分离 line 并将每个元素添加到 数组列表:

try (BufferedReader br = new BufferedReader(new FileReader("F:/DataBase.txt"))) {
    for (String line; (line = br.readLine()) != null; ) {

    }
}

感谢您的帮助

【问题讨论】:

  • 你应该搜索一下,这个问题已经被问过很多次了。

标签: java file arraylist io


【解决方案1】:
    while ((line = br.readLine()) != null) {
            String[] row = line.split("\\s+");
            Row row = new Row();
            row.setId(row[0]);
            row.setFirstName(row[1]);
            row.setSecondName(row[2]);
            row.setDateOfbrth(row[3]);
            InfoList.add(row);
        }

\s+ 是一个正则表达式,它将导致任意数量的连续空格将您的字符串拆分为标记,请参阅此答案How to split a String by space 希望对您有所帮助。

【讨论】:

    【解决方案2】:

    就是这样:

    try (BufferedReader br = new BufferedReader(new FileReader("F:/DataBase.txt"))) {
        String line;
        while((line = br.readLine())!=null ) {
            String[] values = line.split("\\s+");
            ...
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-01-02
      • 1970-01-01
      • 2014-04-07
      • 2012-10-12
      • 1970-01-01
      • 2018-04-22
      • 2015-12-13
      • 2014-04-05
      • 1970-01-01
      相关资源
      最近更新 更多