21xrx.com
2024-11-05 19:32:10 Tuesday
登录
文章检索 我的文章 写文章
Java WriteObject:如何使用Java对象序列化实现数据持久化
2023-06-16 15:24:10 深夜i     --     --
Java WriteObject

Java WriteObject:如何使用Java对象序列化实现数据持久化?

Java WriteObject是Java中一种将对象转化为二进制数据流的方法,通过此方法可以将Java对象序列化存储在文件或者网络中,实现数据的持久化。Java WriteObject在使用时需要考虑对象的属性是否能够被序列化,同时也需要注意反序列化时ClassLoader的问题。

以下是一个Java WriteObject的代码案例:


public class User implements Serializable {

  private String name;

  private int age;

  private String address;

  // ... 省略 getter 和 setter 方法

  public static void serialize(User user, String fileName) {

    try {

      FileOutputStream fileOut = new FileOutputStream(fileName);

      ObjectOutputStream out = new ObjectOutputStream(fileOut);

      out.writeObject(user);

      out.close();

      fileOut.close();

      System.out.println("Serialized data is saved in " + fileName);

    } catch (IOException e) {

      e.printStackTrace();

    }

  }

  public static User deserialize(String fileName) {

    try {

      FileInputStream fileIn = new FileInputStream(fileName);

      ObjectInputStream in = new ObjectInputStream(fileIn);

      User user = (User) in.readObject();

      in.close();

      fileIn.close();

      return user;

    } catch (IOException e) {

      e.printStackTrace();

      return null;

    } catch (ClassNotFoundException e) {

      e.printStackTrace();

      return null;

    }

  }

  public static void main(String[] args) {

    User user = new User();

    user.setName("John");

    user.setAge(20);

    user.setAddress("New York");

    User.serialize(user, "user.ser");

    User newUser = User.deserialize("user.ser");

    System.out.println(newUser.getName());

    System.out.println(newUser.getAge());

    System.out.println(newUser.getAddress());

  }

}

以上代码中,我们定义了一个User类,该类实现了Serializable接口,即可被序列化。User中包含三个属性:name、age、address。我们定义了一个静态方法serialize,将User对象转换为二进制数据流并存储到文件中。同时还定义了一个静态方法deserialize,从文件中读取二进制数据流并反序列化为User对象。在代码的最后,我们将一个User对象序列化并存储在文件中,然后再反序列化为一个新的User对象,并输出其属性。

,对象序列化,数据持久化。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复