保存为二进制/序列化java

保存为二进制/序列化java,java,serialization,Java,Serialization,我必须,不断地引用 1.将帐户保存到二进制(序列化)文件。 2.从二进制(序列化)文件加载(重新创建)帐户 因此,首先,我查找了一些示例,说明了这到底是什么,我不知道,在人们提到xml的相同场景中,在我的脑海中,我认为它的意思是01010011000(二进制),当我查看其他代码时,它看起来像一个普通的文本文件保存 他到底是什么意思,有人能举个例子,或者给我一个更好地澄清这一点的网站吗? 一旦我看到了我真正需要做的事情,我就可以很容易地实现它,我只是不知道到底保存了什么(数据方面的)以及如何保存

我必须,不断地引用

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”的类,您只需在类标题顶部实现可序列化

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

比如说

public class account implements Serializable
{ ...
}

然后,在主函数中,例如,要保存对象的地方,创建一个文件,将其附加到ObjectOutputStream,并以二进制形式写出对象。

请参见以下答案:@Eng.Fouad我尝试过,但我想我失败了。哈哈(我在上面也添加了更多代码)哇!首先,重新抛出这些异常,或者至少记录它们。如果你把你的捕获块空着,你就不知道发生了什么。这可能会给你一个线索,告诉你发生了什么。@smox好吧,是的……但是我的序列化如何保存/加载设置是正确的还是错误的?我只想保存双数组对象,然后将其取回。有些东西坏了。至于catch块,它们只处理文件异常,对吗?我知道文件会重新加载,也知道它会保存,所以即使我记录了它们,在这一步也没关系,对吗?你不能保存java.lang.Object的类型,因为它没有实现对象序列化所需的接口Serializable。我在按钮actionlistener下运行它,我在我得到的文章中添加了更多代码。请参阅,我还需要做更多的工作,我甚至不知道保存文件应该是什么样子,我还在我目前得到的文章中添加了更多的代码。