我正在制作一个智能ATM项目,用户也可以在其中创建一个帐户,因此我需要将数据存储为文件。我尝试使用序列化方法并将用户类的对象写入序列化文件。但是问题是,每当我重新启动程序时,数据库都会重新编写(书面)。
i如果不使用任何其他方法(例如SQL),则可以出路。我的意思是我现在想坚持序列化,因为我还不熟悉其他方法。
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();
}
您对数据库的读取并写入数据库需要对称 - 如果您使用ObjectOutputStream编写对象,那么要回复,必须读取 objects >返回使用ObjectInputStream。当您使用ObjectOutputStream书写时,您不会这样做,但似乎正在使用DatainputStream在读取中。这不会引发错误,因为所有内容,甚至序列化对象都是"数据",但是您的代码将无法检索可用的信息。如果您进行输入并输出对称您的问题(至少应解决短期问题)。