如何从文件读取到arraylist

时间:2015-03-04 14:05:57

标签: java arrays arraylist filereader

我在从文本文件中读取并写回数组列表时遇到了一些麻烦。我想知道你是否可以告诉我哪里出错了?感谢。

accountArrayList = new ArrayList<BankAccount>();

private void fileIn()
{
    try
    {
        createTestAccounts();
        //Scanner input = new Scanner(new FileReader(bankFile));
        JOptionPane.showMessageDialog(null, "File: " + bankFile + " has been opened for importing");
        BufferedReader reader = new BufferedReader(new FileReader("bankFile.txt"));
        String account = reader.readLine();
        while(account !=null) {
           accountArrayList.add(account); // - add a new account to the text file, but exception show that String cannot be converted to Bank Account
           account = reader.readLine();
        }
        reader.close();
    }
    catch(Exception ex)
    {
        JOptionPane.showMessageDialog(null, "not found");
    }
}

5 个答案:

答案 0 :(得分:4)

您要添加String,但list.add方法需要BankAccount类型的对象

您必须找到一种方法将该String转换为该类型的Object,然后添加后者。也许有一个fromString()工厂方法?或者是一个初始化的构造函数 - String?

如果有构造函数,那么它应该看起来像

accountArrayList.add(new BankAccount(account)); 

答案 1 :(得分:1)

要阅读您可能使用的所有行(如果您的文件是UTF-8):

List<String> allLines = Files.readAllLines("bankFile.txt", StandardCharsets.UTF_8);

但正如其他评论中提到的那样,您需要将String转换为BankAccount

答案 2 :(得分:0)

BankAccount ba = new BankAccount(account);
accountArrayList.add(ba);

你需要这样的东西......取决于你的BankAccount类究竟是什么。

答案 3 :(得分:0)

arraylist需要一个BankAccount对象,而不是从一个文件中读取,所以arraylist应该是String。

ArrayList<String> accountArrayList = new ArrayList<>();

对于while循环条件,个人而言,我总是使用,但你也可以这样做。

while((account = reader.readLine()) != null){
    accountArrayList.add(account);
}

答案 4 :(得分:0)

假设你有String的{​​{1}}构造函数,就像这样:

BankAccount

您可以使用Apache commons-io和java 8来获得一行内容!

public BankAccount(String account) {
    this.account = account;
}