在Java中读取和添加文本文件到Object的ArrayList

时间:2014-12-05 08:43:43

标签: java file-io arraylist

我有一个文本文件“addresses.txt”,其中包含有关某人的信息。我创建了一个Person类,我需要读取并将此文本文件中的信息存储到ArrayList中。 我的错误是在尝试读取文本文件时因为String争论而无法将其添加到我的ArrayList中。在这一点上真的输了,我知道这可能是一个简单的解决方案,但我无法弄明白。

如果需要,这是我的一些Person类:

public class Person {
private String firstName;
private String lastName;
private String phoneNumber;
private String address;
private String city;
private String zipCode;

private static int contactCounter = 0;

public Person(String firstName, String lastName){
    this.firstName = firstName;
    this.lastName = lastName;
    contactCounter++;
}

public Person(String firstName, String lastName, String phoneNumber){
    this.firstName = firstName;
    this.lastName = lastName;
    this.phoneNumber = phoneNumber;
    contactCounter++;
}

public Person(String firstName, String lastName, String address, String city, String zipCode){
    this.firstName = firstName;
    this.lastName = lastName;
    this.address = address;
    this.city = city;
    this.zipCode = zipCode;
    contactCounter++;
}

这是我的主要课程:

import java.io.*;
import java.util.Scanner;
import java.util.ArrayList;
public class Rolodex {

public static void main(String[] args) {
    ArrayList <Person> contactList = new ArrayList <Person> ();
    readFile(contactList);
}

public static void readFile(ArrayList <Person> contactList){
    try{
        Scanner read = new Scanner(new File("addresses.txt"));
        do{
            String line = read.nextLine();
            contactList.add(line); //MY ERROR IS HERE. I know why its happening just not how to fix.
        }while(read.hasNext());
        read.close();
    }catch(FileNotFoundException fnf){
        System.out.println("File was not found.");
    }
}

2 个答案:

答案 0 :(得分:1)

您尝试将String行添加到Person数组中。 你不能将String转换为Person。 修复:尝试实现某种行解析器 例如。您的行"adam;bra;555888666;"必须使用line.split(";")解析此字符串 它创建了一个字符串数组(String [])现在只需使用构造函数创建Person并将其添加到contactList中 例如

contactList.add(New Person(parsedString[0], parsedString[1], parsedString[2]));

答案 1 :(得分:0)

您应该使用JSON文件,而不是使用文本文件。使用GSON库,在文件中获取和写入数据更容易......