打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何将Java对象读取和编写文件
Java对象序列化是Java库堆栈提供的一种API,用于序列化Java对象。序列化是将对象转换为可写字节流的过程。一旦转换为字节流,就可以将这些对象写入文件。反向过程称为反序列化。

如果Java对象的类或其任何超类实现java.io.Serializable接口或其子接口java.io.Externalizable ,则该对象是可序列化的。

1. Java对象

Person.java
package com.mkyong; import java.io.Serializable; public class Person implements Serializable { private static final long serialVersionUID = 1L; private String name; private int age; private String gender;
Person() { };
Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; }
@Override public String toString() { return "Name:" + name + "\nAge: " + age + "\nGender: " + gender; }}

2.用Java编写和读取对象

可以使用java.io.ObjectOutputStream将对象转换为字节流。为了能够使用ObjectOutputStream将对象写入文件,必须使相关类实现Serializable接口,如下面的类定义所示。
用Java读取对象类似于使用ObjectOutputStreamObjectInputStream写入对象。下面的示例显示了用Java编写对象和读取对象的完整周期。
在读取对象时, ObjectInputStream直接尝试将所有属性映射到我们尝试将读取对象转换为的类中。如果无法准确地映射相应的对象,则将引发ClassNotFound异常。
现在让我们使用一个示例来了解写作和阅读过程。我们将上面显示的Person类用作对象。
WriterReader.java
package com.mkyong; package com.mkyong;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;public class WriterReader {  public static void main(String[] args) { Person p1 = new Person("John", 30, "Male");    Person p2 = new Person("Rachel", 25, "Female"); try { FileOutputStream f = new FileOutputStream(new File("myObjects.txt"));      ObjectOutputStream o = new ObjectOutputStream(f); // Write objects to file o.writeObject(p1);      o.writeObject(p2); o.close();      f.close(); FileInputStream fi = new FileInputStream(new File("myObjects.txt"));      ObjectInputStream oi = new ObjectInputStream(fi); // Read objects Person pr1 = (Person) oi.readObject();      Person pr2 = (Person) oi.readObject(); System.out.println(pr1.toString());      System.out.println(pr2.toString()); oi.close();      fi.close(); } catch (FileNotFoundException e) { System.out.println("File not found"); } catch (IOException e) { System.out.println("Error initializing stream"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }
} }
执行上面的代码后,我们得到以下输出:
Name:JohnAge: 30Gender: MaleName:RachelAge: 25Gender: Female
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
java serializable 序列化概述
Java对象的序列化和反序列化实践
Serializable接口
JAVA对象序列化机制
java序列化机制学习
java序列化实现Serializable接口
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服