将可序列化对象保存到磁盘时,什么文件扩展名最合适?
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文件的正确版本,这是非启动器.