即使在Java关闭程序后,如何编写对象以归档并保留



我正在制作一个智能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在读取中。这不会引发错误,因为所有内容,甚至序列化对象都是"数据",但是您的代码将无法检索可用的信息。如果您进行输入并输出对称您的问题(至少应解决短期问题)。

最新更新