当前位置: 首页 > 面试题库 >

序列化对象的文件扩展名

汪天宇
2023-03-14
问题内容

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);
}

问题答案:

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

但是,您可能会争辩称,使用的后缀…没有什么区别,前提是该后缀不会与其他常用的应用程序后缀冲突。

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

有什么方法可以查看或编辑ser文件吗?

可能,但是难度很大,并且仅在特定条件下才可以。

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

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



 类似资料:
  • 扩展说明 将对象转成字节流,用于网络传输,以及将字节流转为对象,用于在收到字节流数据后还原成对象。 扩展接口 org.apache.dubbo.common.serialize.Serialization org.apache.dubbo.common.serialize.ObjectInput org.apache.dubbo.common.serialize.ObjectOutput 扩展配置

  • 在java序列化类Mp3player扩展电子设备实现序列化在这个代码中超级类电子设备是不实现序列化的。

  • 属性的简洁表示法 ES6允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。 var foo = 'bar'; var baz = {foo}; baz // {foo: "bar"} // 等同于 var baz = {foo: foo}; 上面代码表明,ES6允许在对象之中,只写属性名,不写属性值。这时,属性值等于属性名所代表的变量。下面是另一个例子。 function f(

  • 问题内容: 我有一个Java库,我想将一个Java对象的实例保存到文本文件中。我尝试使用所有Java库对XML进行序列化和反序列化:但是反序列化不起作用。我在这里发布了一个问题:但是看来我无法为此找到解决方案。 我也尝试过序列化到json ,但是从json反序列化不起作用。 因此,我想知道,还有其他方法可以从Java对象(无法修改以添加标签:)到文本文件进行序列化和反序列化吗? 提前致谢! 问题答

  • 用于SQLAlchemy查询结构的序列化程序/反序列化程序对象,允许“上下文”反序列化。 任何基于sqlAlchemy.sql的sqlAlchemy查询结构。 或sqlacalchemy.orm。 可以使用。结构引用的映射器、表、列、会话等不以序列化形式持久化,而是在反序列化时与查询结构重新关联。 用法与标准python pickle模块的用法几乎相同: from sqlalchemy.ext.s

  • 问题内容: 假设您有一些AppendObjectOutputStream类(这是一个ObjectOutputStream!),它重写了writeStreamHeader(),如下所示: 现在,假设您打算将多个对象保存到一个文件中。程序每次运行时,一个对象。即使在第一次运行时,您是否也会使用AppendObjectOutputStream()? 问题答案: 您必须首先使用常规ObjectOutput