java – 序列化对象的文件扩展名

将可序列化对象保存到磁盘时,什么文件扩展名最合适?
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);
}

解决方法

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

但是,您可以认为它使用什么后缀几乎没有区别,只要这不会与其他常用的应用程序后缀冲突.

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

Is there a way i can view or edit the ser file ??

可能,但很难,只有在某些条件下.

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

另一种可能的方法是找到.ser文件中提到的所有类的.class文件,对对象进行反序列化,并使用反射来访问反序列化对象的字段.你甚至可以调整他们并对他们进行预留.但是,如果您没有所有.class文件的正确版本,这是非启动器.

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...