其他分享
首页 > 其他分享> > 31.对象的序列化和反序列化

31.对象的序列化和反序列化

作者:互联网

序列化和反序列化

  • 把对象转换为字节序列的过程称为对象的序列化。----写对象的过程
  • 把字节序列恢复为对象的过程称为对象的反序列化。----读对象的过程

步骤

使用到:

  • 对象输入流:ObjectInputStream
  • 对象输出流:ObjectOutputStream

ObjectInputStream

构造方法

为完全重新实现ObjectInputStream的子类提供一种方法,不必分配刚刚被ObjectInputStream实现使用的私有数据。

创建从指定的InputStream读取的ObjectInputStream。

常用方法

关闭输入流。

读取一个字节的数据。

读入一个字节数组。

读取一个字节的数据。

读取布尔值。

读取一个8位字节。

读一个16位字符。

读64位双倍。

读取一个32位int。

读64位长。

从ObjectInputStream读取一个对象。

读取16位短。

ObjectOutputStream

构造方法

为完全重新实现ObjectOutputStream的子类提供一种方法,不必分配刚刚被ObjectOutputStream实现使用的私有数据。

创建一个写入指定的OutputStream的ObjectOutputStream。

常用方法

关闭流。

刷新流。

写入一个字节数组。

写入一个子字节数组。

写一个字节。

写一个布尔值。

写入一个8位字节。

写一个字符串作为字节序列。

写一个16位的字符。

写一个字符串作为一系列的字符。

写一个64位的双倍。

将缓冲的字段写入流。

写一个32位浮点数。

写一个32位int。

写一个64位长

将指定的对象写入ObjectOutputStream。

写一个16位短。

示例:

	public static void main(String[] args) {
		Goods goods1 = new Goods("gd0001", "电脑", 3000);
		try {
			FileOutputStream fos = new FileOutputStream("goodsList.txt");
			ObjectOutputStream oos = new ObjectOutputStream(fos);
			FileInputStream fis = new FileInputStream("goodsList.txt");
			ObjectInputStream ois = new ObjectInputStream(fis);
			// 对象的序列化,写入对象
			oos.writeObject(goods1);
			oos.writeBoolean(false);
			oos.flush();
			// 对象的反序列化,读对象
			System.out.println(ois.readObject());
			// 先读Goods对象,后读Boolean,顺序不可变,否则报错
			System.out.println(ois.readBoolean());
			
			fos.close();
			oos.close();
			fis.close();
			ois.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}

标签:ObjectOutputStream,字节,ObjectInputStream,对象,31,int,val,序列化
来源: https://blog.csdn.net/qq_38496329/article/details/118419134