保存为二进制/序列化java[英] Saving to binary/serialization java

问题描述

我必须,引用引用,

<块引用>

1.将帐户保存到二进制(序列化)文件.2.从二进制(序列化)文件加载(重新创建)帐户.

所以首先,我正在查找确切内容的示例,我迷失了,在同样的场景中人们提到 xml,在我的脑海中我认为它的意思是 01010011000(二进制),当我查看其他代码时,它看起来像普通的文本文件一样保存.

他到底是什么意思,有人可以发布一个例子,或者给我一个更好地澄清这一点的网站吗?一旦我看到我真正需要做的事情,我就可以轻松实现它,我只是对保存的内容(数据方面)以及如何保存感到困惑.

*我已经可以选择通过文本文件 (.txt) 保存,如果我可以将其中的一些代码用于此二进制部分.

谢谢!

这是我现在所拥有的,我认为它仍然无法正常工作.

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.logging.Level;
import java.util.logging.Logger;

public class SerializationMain implements Serializable {

    public static void saveSerialized(Object YourObject, String filePath) throws IOException {
        ObjectOutputStream outputStream = null;
        try {
            outputStream = new ObjectOutputStream(new FileOutputStream(filePath + ".dat"));
            outputStream.writeObject(YourObject);
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            try {
                if (outputStream != null) {
                    outputStream.flush();
                    outputStream.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }

    public static Object loadSerialized(String filePath, Object[][] data1) throws IOException {
        try {
            FileInputStream fileIn = new FileInputStream(filePath);
            ObjectInputStream in = new ObjectInputStream(fileIn);
            try {
                data1 = (Object[][]) in.readObject();
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(SerializationMain.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        System.out.println(data1.length);
        return data1;
    }
}

推荐答案

假设你有一个名为"account"的类,你只需要在类头的顶部implements Serializable.

据我了解,这会将所有数据序列化为二进制形式.当然,您仍然需要执行这些步骤,以使用 ObjectOutputStream/ObjectInputStream 将类对象实际写入/读取到文件中.

比如说……

public class account implements Serializable
{ ...
}

然后在你的主函数中,例如,你想保存对象,你会创建一个文件,将它附加到一个 ObjectOutputStream 并以二进制形式写出你的对象.

本文地址:https://www.itbaoku.cn/post/978359.html