序列化对象的文件扩展名

将对象保存到磁盘时,哪种文件扩展名最合适?Serializable

FileOutputStream fos = null;
ObjectOutputStream out = null;
try {
    fos = new FileOutputStream(filename);
    out = new ObjectOutputStream(fos);
    out.writeObject(mySerializableObject);
} catch (IOException ex) {
    ex.printStackTrace();
} finally {
    IOUtils.closeQuietly(out);
}

答案 1

“.ser”是文件后缀的合理选择 - http://www.file-extensions.org/ser-file-extension

但是,您可以争辩说,使用什么后缀几乎没有区别......前提是不会与其他常用的应用程序后缀发生冲突。

Java 序列化对象文件只能由其类路径上具有相关类的 Java 应用程序读取(以正常方式)。一刀切的“.ser”后缀没有提供关于这些类可能是什么以及应用程序启动框架应该在哪里可以找到它们的线索。因此,您将无法设置Windows样式的文件关联来提供双击应用程序启动。


有没有办法查看或编辑“.ser”文件?

可能,但非常困难,并且仅在特定条件下。

文件的内容将高度依赖于序列化的类。现在可以确定该类的名称,以及(在某些情况下)序列化字段的名称和类型。但是,如果类使用自定义序列化/外部化,则表示形式将是二进制数据的不透明 blob,文件中没有有关如何对其进行解码的线索。不透明的 blob 问题相当普遍,因为 Java SE 类库中的许多重要类都使用自定义序列化...为了提高效率...许多应用程序类也是如此。

另一种可能的方法是查找 .ser 文件中提到的所有类的.class文件,反序列化为对象,并使用反射访问反序列化对象的字段。您甚至可以调整它们并重新序列化它们。但是,如果您没有所有.class文件的正确版本,则这是不可行的。

最后,使用二进制编辑器编辑“.ser”文件在技术上是可能的,但会很危险。序列化格式不是为支持此功能而设计的。


答案 2