现在我正在为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个。
我知道这篇文章很长,但我已经被困了几天了!
答案 0 :(得分:0)
您需要:
利用对象序列化:
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");
}