我正在制作智能ATM项目,用户也可以在其中创建帐户,因此我需要将数据存储到文件中。我尝试使用Serialization方法并将User类的对象写入序列化文件。但问题是每当我重新启动程序时,数据库都会被重写(Over Written)。
如果不使用SQL之类的任何其他方法,我有一个出路。我的意思是我现在想坚持使用Serialization,因为我还不熟悉其他方法。
public void addUserToDatabase() {
String fileName = System.getProperty("user.home")+"/accounts.txt";
try {
FileOutputStream fos = new FileOutputStream(fileName);
ObjectOutputStream oos = new ObjectOutputStream(fos);
for(int i =0; i<numberOfUser; i++) {
oos.writeObject(u[i]);
}
fos.close();
oos.close();
}
catch(Exception e) {
System.out.println("UNABLE TO ADD USER TO DATABASE!");
}
}
public void fileInputStreamMethod() throws Exception
{
String fileName = System.getProperty("user.home")+"/aas.txt";
FileOutputStream fos = new FileOutputStream(fileName);
DataOutputStream dos = new DataOutputStream(fos);
int i=12;
dos.writeInt(i);
dos.close();
FileInputStream fis = new FileInputStream(fileName);
DataInputStream dis = new DataInputStream(fis);
int factorial=dis.readInt();
System.out.println("The No. YOu entered is "+factorial);
dis.close();
}
答案 0 :(得分:4)
您对数据库的读取和写入数据库需要是对称的 - 如果使用ObjectOutputStream编写对象,然后要回读,则必须使用ObjectInputStream读回对象。当你用ObjectOutputStream写出来但似乎正在使用DataInputStream读回来时,你不会这样做。这不会引发错误,因为所有内容,甚至是序列化对象,都是&#34;数据&#34;,但是您的代码无法检索可用信息。如果您使输入和输出对称,那么您的问题(至少是短期问题)应该得到解决。