首页 > 编程语言 > 详细

如何将Java对象编写和读取文件

时间:2020-10-22 22:30:08      阅读:29      评论:0      收藏:0      [点我收藏+]

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:John
Age: 30
Gender: Male
Name:Rachel
Age: 25
Gender: Female

 

 

如何将Java对象编写和读取文件

原文:https://www.cnblogs.com/summerxbc/p/13860477.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!