如何使用输入文件中的文本填充ArrayList?

时间:2013-04-04 17:49:07

标签: java file arraylist

我将一些ArrayList保存到文件中,它具有以下格式:

[hotel1, hotel2, hotel3]               // ArrayList 1 contents
[hotel5, hotel6]                       // ArrayList 2 contents

当我正在阅读时,我想分配例如一个ArrayList myList,我想将hotel1,hotel2和hotel3添加到myList。我可以直接做到这一点吗?目前我有一个字符串值,读取下一行,它保存括号。正在寻找另一种方式,以便我可以将每一行分配给一个ArrayList<字符串>对象

public class MyClass1 {
   ArrayList<String> myList = new ArrayList<String>();
    ... // some other code

private void loadUp() throws IOException{
    JFileChooser chooser = new JFileChooser();
        chooser.setDialogTitle("Choose a file to open...");
        checker = chooser.showOpenDialog(null);

    // if open is clicked
    if (checker == JFileChooser.APPROVE_OPTION) {
        File inFile = chooser.getSelectedFile();
        Scanner in = new Scanner(inFile);
        while (in.hasNextLine()) {
            // Here want to assign next line to myList
        }
        in.close();
}
 }

2 个答案:

答案 0 :(得分:3)

使用此:

Scanner file = new Scanner(myFile);
ArrayList<Scanner> lines = new ArrayList<>();
while(file.hasNextLine())
    lines.add(new Scanner(file.nextLine()));
ArrayList<ArrayList<String>> lists = new ArrayList<>(lines.size());
for(Scanner s : lines)
    s.useDelimeter("[, ]" + System.lineSeparator());
for(int i = 0; i < lines.size(); ++i)
{
    while(lines.get(i).hasNext())
    {
        lists.add(new ArrayList<String>());
        lists.get(i).add(lines.get(i).next());
    }
}

然后,您将得到一个包含值的字符串列表列表。

答案 1 :(得分:2)

尝试下面的代码来阅读每一行

 BufferedReader br = new BufferedReader(new FileReader(file));
    String line;
    while ((line = br.readLine()) != null) {
       // process the line.
    }
    br.close();