根据文件内容创建对象数组

时间:2015-07-13 00:11:20

标签: java arrays arraylist

我有一个看起来像这样的文本文件。

  

列表开头
  
  姓名:珍妮特
  年龄:21岁   生日月:4月   
  清单结束
  
  列表开始
  
  姓名:彼得   年龄:34岁   生日月:1月
  
  列表结尾

所以我想获取信息并将其放入对象数组中。这是一个广泛的列表,我使用分隔符beginning of listend of list来分隔内容。

如何将这些项目存储在对象数组中?

1 个答案:

答案 0 :(得分:2)

我建议您首先使用nameagebirthday month属性创建一个用于存储信息的类。覆盖toString()方法是一种非常好的做法,因此您可以整齐地打印出类。

然后,您可以检查每一行是否包含有关姓名,年龄或生日月份的信息,方法是将每行分成一个单词数组,然后检查信息。

一旦该行显示" END OF LIST",您可以将class Person参数添加到ArrayList

对于示例,我使用" people.txt" 作为文件(确保将文本文档放在 src 文件夹之外,其中包含你的.java文件)。

<强> Main.java

import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main {

    public static void main(String[] args)
    {
        BufferedReader bufferedReader = null;
        FileReader fileReader = null;
        String name = null;
        String age = null;
        String month = null;
        List<Person> people = new ArrayList<Person>();

        try
        {
            String fileName = "people.txt";
            fileReader = new FileReader(fileName);
            bufferedReader = new BufferedReader(fileReader);
            String line = null;

            while ((line = bufferedReader.readLine()) != null)
            {
                String[] information = line.split(" ");

                if (Arrays.asList(information).contains("Name:"))
                {
                    name = information[1];
                }
                if (Arrays.asList(information).contains("Age:"))
                {
                    age = information[1];
                }
                if (Arrays.asList(information).contains("month:"))
                {
                    month = information[2];
                }
                if (line.equals("END OF LIST"))
                {
                    people.add(new Person(name, age, month));

                    name = "";
                    age = "";
                    month = "";
                }
            }

            for (Person person : people)
            {
                System.out.println(person);
                System.out.print("\n");
            }
        }
        catch (FileNotFoundException e) 
        {
            System.out.println(e.getMessage());
        } 
        catch (IOException ex) 
        {
            System.out.println("Error reading people.txt");
        }
        finally
        {
            if (bufferedReader != null)
            {
                try
                {
                    bufferedReader.close();
                }
                catch (IOException ex)
                {
                    System.out.println(ex.getMessage());
                }
            }
            if (fileReader != null)
            {
                try
                {
                    fileReader.close();
                }
                catch (IOException ex)
                {
                    System.out.println(ex.getMessage());
                }
            }
        }       
    }
}

<强> Person.java

public class Person {
    private String name;
    private String age;
    private String birthday;

    public Person(String name, String age, String birthday)
    {
        this.name = name;
        this.age = age;
        this.birthday = birthday;
    }

    @Override
    public String toString()
    {
        String information = "Name: " + name + "\nAge: " + age + "\nBirthday: " + birthday;
        return information;
    }
}