java - 使用 ObjectOutputStream 将对象写入文本文件时出现不可读的字符

标签 java

我现在的问题是: 在我的文本文件中,当尝试使用 ObjectOutputStream 将对象写入 Cases.txt 文件时,我得到了一些看起来很时髦的字符。

    FileOutputStream file = new FileOutputStream("/cases.txt");
    ObjectOutputStream data = new ObjectOutputStream(file);

    DefectProduct s1 = new DefectProduct("test", 5, "test", "test",
            "test", 50, 2019, 1, 24, "505", "test" );
    data.writeObject(s1);

    data.flush();
    data.close();
    System.out.println("Record added");

现在我正在尝试将我的对象写入文本文件的部分工作。我在某处读到,ObjectOutputStream 是将对象写入文本文件的选择。它是否正确?

最后,我的目标是获取整个对象数组列表,并将整个数组列表立即写入我的文本文件。

最佳答案

ObjectOutputStream 不会产生人类可读的流(即您无法在文本编辑器中打开它并期望读取内容)。文本编辑器尝试将文件中的所有内容显示为文本,但文件本身不包含有效文本,这就是文本编辑器显示不可读字符的原因。

ObjectOutputStream 的目的是生成稍后可以使用 ObjectInputStream 读回的数据,但没有人说这些数据将是有效的文本数据。

输出文件是 cases.txt 并不重要。文件的扩展名只是名称的一部分,并向用户或操作系统提示该文件中可能包含什么内容,但这并不意味着该文件中实际保存的内容。您可以将输出文件命名为 cases.mp3 但这不会生成音乐文件。

关于java - 使用 ObjectOutputStream 将对象写入文本文件时出现不可读的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59195991/

相关文章:

java - 什么是NullPointerException,我该如何解决?

java - 使用 JNA 从 Java 进行 native C 调用的巨大内存占用

java - 从现有 Java 项目创建 servlet

java - Spring Boot 基于角色的身份验证

java - 在 Java 中使用 MANIFEST.MF 文件

java - 如何防止外部xml文件被修改?

java - 启动窗口在 mac 中不起作用

java - 从函数打印数组 - java

java - 字符串构造函数_网络

java - 如何使用java读取euc-kr编码系统中utf8 encodng的文件名?