我有两节课:
public abstract class GiaoDich{
//variable and set/get method
public abstract double calcualteMoney();
}
public class GiaoDichDat extends GiaoDich implements Serializable {
public static List<GiaoDichDat> listGiaoDichDat = new ArrayList<>();
//new value
@Override
public double calculatorMoney() {
}
public void getDatafromKeyboard() {
//get data from keyboard
}
public double avgMoney() {
}
public void readFile() throws FileNotFoundException, IOException, ClassNotFoundException
{
List<GiaoDichDat> lsttemp = new ArrayList<GiaoDichDat>();
try
{
System.out.println("Doc du lieu tu file");
ObjectInputStream obis = new ObjectInputStream(new FileInputStream( "GiaoDichDat.text"));
lsttemp = (List<GiaoDichDat>) obis.readObject();
obis.close();
}
catch (IOException ex)
{
ex.printStackTrace();
}
for (GiaoDichDat get : lsttemp)
{
System.out.println(get.toString());
}
}
public void saveFile() throws FileNotFoundException, IOException
{
try
{
FileOutputStream fos = new FileOutputStream("GiaoDichDat.text");
ObjectOutputStream obos = new ObjectOutputStream(fos);
obos.writeObject(listGiaoDichDat);
fos.close();
obos.flush();
System.out.println("Ghi du lieu thanh cong");
obos.close();
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
}
从终端读取数据后,我写入文件就可以了。但是当我再读一次。它没有数据。
答案 0 :(得分:0)
要使用ObjectInputStream
和ObjectOutputStream
读取和写入对象,所有对象都需要实现Serializable
,但您的父类无法执行此操作。
答案 1 :(得分:-1)
您似乎必须忽略抛出的异常:
fos.close();
不要关闭它。
obos.flush();
由于事先关闭,这应该导致IOException
。在任何情况下都应将其删除,因为obos.close()
无论如何会导致flush()
。
System.out.println("Ghi du lieu thanh cong");
obos.close();
这是你唯一需要的。
在这些方法中捕获IOException
没有意义,因为它们已被声明为抛出它,并且调用者需要知道任何异常。删除捕获块。