对象流
ObjectInputStream
ObjectOutputStream
用于存储和读取基本数据类型数据或对象的处理流,他的强大之处就是可以吧java中的对象写入到数据源中,也能把对象从数据源中还原回来
序列化:用ObjectOutputStream类保存基本类型数据或对象的机制
反序列化:用ObjectInputStream类读取基本类型数据或对象的机制
ObjectOutputStream和ObjectInputStream不能序列化static和transient修饰的成员变量
对象的序列化机制:允许把内存中的java对象转换成平台无关的二进制流,从而允许把这种二进制流持久的保存在磁盘上,或通过网络将这种二进制流传输到另一个网络节点。当其他程序获取了这种二进制流,就可以恢复成原来的java对象。
1 public class ObjectTest { 2 @Test 3 public void test(){ 4 ObjectOutputStream oos = null; 5 try { 6 //1.创建节点流(文件流) 7 FileOutputStream fos = new FileOutputStream("object.txt"); 8 //2.创建对象流,实现序列化操作 9 oos = new ObjectOutputStream(fos); 10 //3.调用 ObjectOutputStream 对象的 writeObject(对象) 方法输出可序列化对象 11 oos.writeObject(new String("对象流很简单!")); 12 //4.注意写出一次,操作flush()一次 13 oos.flush(); 14 } catch (IOException e) { 15 e.printStackTrace(); 16 } finally { 17 if (oos != null){ 18 //5.关闭流 19 try { 20 oos.close(); 21 } catch (IOException e) { 22 e.printStackTrace(); 23 } 24 } 25 } 26 } 27 }
1 public class ObjectTest { 2 @Test 3 public void test2(){ 4 ObjectInputStream ois = null; 5 try { 6 //1.创建节点输入流(FileInputStream) 7 FileInputStream fis = new FileInputStream("object.txt"); 8 //2. 创建对象流(ObjectInputStream) 9 ois = new ObjectInputStream(fis); 10 //3.调用 ObjectOutputStream 对象的 readObject() 方法输出可序列化对象 11 Object obj = ois.readObject(); 12 String str = (String) obj; 13 System.out.println(str); 14 } catch (IOException e) { 15 e.printStackTrace(); 16 } catch (ClassNotFoundException e) { 17 e.printStackTrace(); 18 } finally { 19 //4.关闭流 20 try { 21 ois.close(); 22 } catch (IOException e) { 23 e.printStackTrace(); 24 } 25 } 26 } 27 }
要想一个自定义类对象是可序列化的,该类需要满足以下要求:
1.需要实现接口:Serializable
2.需要当前类提供一个全局常量:serialVersionUID, 例如:
public static final long serialVersionUID = 475463534532L
3.除了当前类需要实现Serializable接口之外,还必须保证其内部所有属性也必须是可序列化的。(默认情况下,基本数据类型可序列化)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~