java 类的序列化_学Java· 对象序列化· Java终章

亦凉 2022-11-05 08:53 172阅读 0赞

对象序列化

序列化:把Java对象转换成字节序列的过程

反序列化:把字节序列恢复成Java对象的过程

步骤:

1.创建一个类,继承Serializable

2.创建对象

3.将对象写入文件

4.从文件读取对象信息

对象的读写涉及两个类:

对象输入流ObjectInputStream

对象输出流ObjectOutputStream

实战

写一个商品类,将类的信息保存在文件中,并从文件中读取

public class Goods implements Serializable {

private String goodsId;

private String goodsName;

private double price;

public Goods(String goodsId, String goodsName, double price) {

super();

this.goodsId = goodsId;

this.goodsName = goodsName;

this.price = price;

}

public String getGoodsId() {

return goodsId;

}

public void setGoodsId(String goodsId) {

this.goodsId = goodsId;

}

public String getGoodsName() {

return goodsName;

}

public void setGoodsName(String goodsName) {

this.goodsName = goodsName;

}

public double getPrice() {

return price;

}

public void setPrice(double price) {

this.price = price;

}

@Override

public String toString() {

return “商品信息 [编号:” + goodsId + “, 名称:” + goodsName + “, 价格:” + price + “]“;

}

}

  1. import java.io.FileInputStream;
  2. import java.io.FileNotFoundException;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5. import java.io.ObjectInputStream;
  6. import java.io.ObjectOutputStream;
  7. public class Test \{
  8. public static void main(String\[\] args) \{
  9. // 定义Goods类对象
  10. Goods goods1 = new Goods("gd001", "电脑", 4000);
  11. try \{
  12. // 输出流
  13. FileOutputStream fos = new FileOutputStream("C:\\\\test\\\\goods.txt");
  14. ObjectOutputStream oos = new ObjectOutputStream(fos);
  15. // 输入流
  16. FileInputStream fis = new FileInputStream("C:\\\\test\\\\goods.txt");
  17. ObjectInputStream ois = new ObjectInputStream(fis);
  18. // 将Goods对象信息写入文件
  19. oos.writeObject(goods1);
  20. oos.writeBoolean(true);// 写入一个布尔类型的数据
  21. oos.flush();
  22. // 将文件的内容读取到控制台
  23. try \{
  24. Goods rgoods1 = (Goods) ois.readObject();
  25. System.out.println(rgoods1);
  26. \} catch (ClassNotFoundException e) \{
  27. // TODO Auto-generated catch block
  28. e.printStackTrace();
  29. \}
  30. System.out.println(ois.readBoolean());// 注意读写顺序,否则报EOF错误
  31. fos.close();
  32. oos.close();
  33. fis.close();
  34. ois.close();
  35. \} catch (FileNotFoundException e) \{
  36. // TODO Auto-generated catch block
  37. e.printStackTrace();
  38. \} catch (IOException e) \{
  39. // TODO: handle exception
  40. \}
  41. \}
  42. \}

商品信息 [编号:gd001, 名称:电脑, 价格:4000.0]

true

发表评论

表情:
评论列表 (有 0 条评论,172人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java序列对象

    java序列化 Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型

    相关 Java对象序列

    [Java对象序列化][Java]   当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个

    相关 Java 对象序列

    引言 将 [ Java][Java] 对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列

    相关 Java对象序列

    Java对象的序列化 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的

    相关 java对象序列

    概念: Java 提供了一种对象序列化的机制,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型。将序列化对象写入文件