java - 如何从文件系统中读取 Java ObjectOutputStream 生成的文件?
问题描述
我是编程世界的新手,正在探索 JAVA 文件 I/O 操作,但发现奇怪的是,当我尝试从文件系统读取 ObjectOutputStream 生成的文件时,它显示的是字节数组类型的数据而不是文本可红色数据。
请注意,它允许我使用 ObjectInputStream 读取数据,但不能直接从文件系统读取数据。
我正在使用的代码:(参考:https ://www.tutorialspoint.com/java/java_serialization.htm )
public class Employee implements java.io.Serializable {
public String name;
public void mailCheck() {
System.out.println("Mailing a check to " + name);
}
}
public class SerializeDemo {
public static void main(String [] args) {
Employee e = new Employee();
e.name = "Reyan Ali";
try {
FileOutputStream fileOut =
new FileOutputStream("C:/Users/123/Documents/record.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(e);
out.close();
fileOut.close();
System.out.printf("Serialized data is saved.");
} catch (IOException i) {
i.printStackTrace();
}
}
}
- 机器配置:Window 10 | JDK 1.8
当我在文本编辑器中打开文件时,它是这样的:
aced 0005 7372 0008 456d 706c 6f79 6565
025e 7434 67c6 123c 0200 0349 0006 6e75
....7274 0009 5265 7961 6e20 416c 69
任何建议如何在文本编辑器中读取 ObjectOutputStream 文件?
解决方案
一般你不会。它是二进制文件。
您可以在 Java 文档中找到有关格式的详细信息。但是您需要的不仅仅是简单的文本编辑器才能破译它。
我建议你选择不同的存储格式。有很多可供选择。XML 和 JSON 可能是最流行的。他们都有自己的优点和缺点。
推荐阅读
- c++ - 有效地在 QPainterPath 周围绘制文本
- java - 插件 1 删除插件 2 类 (Maven)
- mongodb - 如果现有文档的时间戳早于预设时间,则插入 mongo 文档 - 使用 upsert
- python - 如何从表单中获取数据?
- r - 函数 hdr.den(),x 轴间隔问题
- php - Symfony4 自定义路由器 UrlGenerator
- c++ - 确定 zip 文件是否受 Minizip 密码保护
- css - CSS网格:当内容>最小值时,列宽适合内容的最小值和最大值
- javascript - Firebase Web 应用程序 signInWithEmailAndPassword 问题
- javascript - tsconfig 中的模块选项是用来做什么的?