从文件中读取对象,而不是添加到arraylist

时间:2015-03-14 13:58:36

标签: java arraylist io binary

现在我正在为java二进制I / O进行学校作业。

我必须写一些餐馆菜肴,把它们写成文件。我也必须从文件中读取这些对象。

现在我得到了它的工作,我使用这段代码写文件

private ArrayList<Gerecht> gerechten;

public void writeToFile() throws FileNotFoundException, IOException {

    try {

        DataOutputStream out = new DataOutputStream(new FileOutputStream("Menu.txt"));
        out.writeBytes(gerechten.toString());
    } // catch any file creation errors
    catch (FileNotFoundException e) {
        System.out.println("Error opening file: Menu.txt");

    } catch (IOException e) {
        System.out.println("Error writing file: Menu.txt");

    }
}

&#34; Gerecht&#34;对象包含:

名字= naam。

a Price = prijs。

Callories = calorien。

public abstract class Gerecht extends Menu{
private String naam;
private double prijs;
private int calorien;


public Gerecht(String naam, double prijs, int calorien) {
    this.naam = naam;
    this.prijs = prijs;
    this.calorien=calorien;


}

当我用上面的构造函数创建一个对象时,我得到了这种输出。

屏幕截图:http://gyazo.com/37d8238aa8b35cb0da06e0d4fca10fa0

忽略Arraylist中所有Dishes的第4行,这与super / subclasses有关。

现在我必须阅读此输出,并创建它们的对象。例如:我会手动在文件中键入另一个菜,具有相同的布局,应该有4个对象而不是3个。

我知道这篇文章很长,但我已经被困了几天了!

1 个答案:

答案 0 :(得分:0)

您需要:

  1. 解析写入的字符串并手动创建对象
  2. 利用对象序列化

    try {
        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("Menu.txt"));
        out.writeObject(gerechten);
    } // catch any file creation errors
    catch (FileNotFoundException e) {
        System.out.println("Error opening file: Menu.txt");
    } catch (IOException e) {
        System.out.println("Error writing file: Menu.txt");
    }