如何从文件系统中读取 Java ObjectOutputStream 生成的文件?

Posted

技术标签:

【中文标题】如何从文件系统中读取 Java ObjectOutputStream 生成的文件?【英文标题】:How to read Java ObjectOutputStream generated file from File System? 【发布时间】:2021-11-06 06:54:16 【问题描述】:

我是编程世界的新手,正在探索 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 文件?

【问题讨论】:

【参考方案1】:

通常你不会。它是二进制文件。

您可以在 Java 文档中找到有关格式的详细信息。但是您需要的不仅仅是简单的文本编辑器才能破译它。

我建议您选择不同的存储格式。有很多可供选择。 XML 和 JSON 可能是最流行的。它们都有自己的优点和缺点。

【讨论】:

【参考方案2】:

你需要使用 ObjectInputStream! 用FileInputStream读取de文件得到ois

FileInputStream fis = new FileInputStream(new File());
ObjectInputStram ois = new ObjectInputStram(fis));
Employee e = (Enployee) ois.readObject();

【讨论】:

以上是关于如何从文件系统中读取 Java ObjectOutputStream 生成的文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Java 中真正从类路径中读取文本文件

如何在 Java 中真正从类路径中读取文本文件

[java]如何在windows下读取远程的linux下面的文件?

如何提高java读取大文本文件的效率

java中如何从文件中读取数据

java ArrayList 如何读取文件中的数据,并且搜索