Java序列化将对象保存在文件中

Java序列化将对象保存在文件中,java,serialization,Java,Serialization,在java中序列化对象时 FileOutputStream fileOut = new FileOutputStream("src/employee.ser"); ObjectOutputStream out = new ObjectOutputStream(fileOut); out.writeObject(em); out.close(); fileOut.close(); 我们可以使用任何类型的扩展名.bin,.txt作为输出文件

在java中序列化对象时

FileOutputStream fileOut =
            new FileOutputStream("src/employee.ser");
    ObjectOutputStream out = new ObjectOutputStream(fileOut);
    out.writeObject(em);
    out.close();
    fileOut.close(); 

我们可以使用任何类型的扩展名
.bin
.txt
作为输出文件。为什么
.ser
最受欢迎?

.ser是
可序列化
的缩写,是常见的3个字母的文件扩展名。您可以使用您喜欢的任何其他扩展,也可以不使用任何扩展。创建文件时不会出现问题测试它。在您测试并向自己演示了这一点之后,我建议为生成的文件定义适当的扩展名,或者继续使用ser,因为它是Java开发人员常见的序列化二进制数据

假设您使用txt作为扩展名,而不是ser或自定义扩展名。电脑的另一个非开发人员用户意外地进入包含二进制数据文件的文件夹,该文件具有txt扩展名(可能在Windows或Mac环境中,在Linux上几乎不可能,但并非不可能:),然后打开它并看到乱七八糟的内容,因为毕竟是序列化数据。该用户可能不会看到乱七八糟的内容,或者可能认为文件已损坏并将其删除。这就是为什么对包含二进制数据的文件使用非通用扩展名更好的原因


注意:您可以使用几乎所有的程序打开任何文件,尽管其扩展名不同,但您会看到它因无法识别格式或显示乱码而阻塞,但这不在问题范围之内。

您可以使用任何您想要的扩展名。从技术上讲,您可以使用任何您想要的扩展名,但是.ser可能更可取,因为这样您就知道它是一个序列化类。就像源代码文件中有.java文件一样,这些文件也可以是.txt,具有相同的上下文我猜您在linux上没有花太多时间。扩展毫无意义。而且,你的问题或多或少是为什么会有扩展。维基百科上关于它们的文章相当长。简短回答:元数据。不要叫它.txt。它不是一个文本文件。