繁体   English   中英

将 txt 文件读入 ArrayList 的问题

[英]Problem with Reading a txt File into an ArrayList

我正在编写一个代码来从 txt 文件中读取一些文本,如下所示:

Car:
     Model: Ford
     Color: Red
     Cost: $123123.91
     Car Type: Sedan
     Towing: Included

Car:
     Model: Mitsubishi
     Color: Yellow
     Cost: $12312.00
     Car Type: Sedan
     Towing: Not Included

Car:
     Model: Honda
     Color: Grey
     Cost: $1231.00
     Car Type: Sedan
     Towing: Not Included

到 Arraylist。 但所有文本都存储在索引 position 0 中。

我希望每个订单都存储在不同的索引 position 中。

Arraylist 'orders' 存储输入到 gui 中的订单,完美运行。 按下退出时,这些命令将写入文本文件

在下一次运行时,当我按下加载按钮时,所有订单都从同一个文本文件读取到不同的 ArrayList 'orders2'。

我曾尝试使用 for 循环,但问题似乎与我将订单读取/存储到文本文件的方式有关。

public void save() throws FileNotFoundException {

    PrintWriter pw = new PrintWriter(new FileOutputStream(fileName, false));

    for (Object orderlist : orders) {
        pw.println(orderlist);
    }
    pw.close();
}

public void load() throws FileNotFoundException {

    FileInputStream fileIn = new FileInputStream(fileName);
    Scanner scan = new Scanner(fileIn);
    scan.useDelimiter("  ");
    while (scan.hasNext()) {

        orders2.add(scan.next());
    }

    System.out.println(orders2.get(0));
}

public void actionPerformed(ActionEvent e) {

    if (e.getActionCommand().equals("Exit")) {
        try {
            save();
        } catch (FileNotFoundException f) {
            f.printStackTrace();
        }

        System.exit(0);
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }
}

扫描仪通过标记 stream 您将其作为输入来工作。 标记是由分隔符分隔的东西。 您告诉它标记由两个空格分隔。 鉴于您的文本文件中的任何地方都不包含 2 个空格,因此整个内容(从汤到坚果)都是一个单一的标记。

如果我阅读了您的代码(不完整),我会看到for (Object orderlist: orders) :这不对; 这意味着订单是订单列表的列表或数组。 你真的有订单清单吗? 数组和列表都不会那样打印,所以我对此表示怀疑; 这意味着您的变量名称具有误导性,可能是因为您不太了解自己的代码在做什么。 此外,使用Object可能不正确。 当然, ordersOrder对象的数组或列表,也可能是String对象。

更清晰的代码将更容易理解和评论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM