当前位置: 首页 > news >正文

IO流-对象流

1.理解

  • - 对象流主要用于操作Java对象,将Java对象存储到磁盘山海或在网络中传输
  • - 将Java对象存储到磁盘或进行网络传输,我们成为序列化(流化)存储
  • - 将磁盘上存储的文件读取到Java程序中,并还原Java对象,这个过程称为反序列化(还原)
  • - 对象流通过两个类实现ObjectInputStream(对象输入流),ObjectOutputStream(对象输出流)
  • - java中不是所有对象都可以存到磁盘或在网络中传输
  • - Java中规定只有实现序列化接口的对象猜允许进行"序列化操作",否则不允许,会报没有序列化异常"NotSerializableException" - 序列化接口指java.io.Serializable接口
  • - java.io.Serializable接口是一个标识接口,接口中没有任何方法和属性,该接口只用于表示当前对象是否允许序列化
  • - 当要对一个对象进行序列化操作时,JVM会先检测该对象是否实现了Serializable接口,如果实现了,则允许序列化,如果没有实现则报错(不允许序列化)
  • - Java中除了基本类型在进行磁盘存储或网络传输时不需要进行序列化,其他类型都需要  

2.实例

  • 源码

  •  User类

  • package 对象流;import java.io.Serializable;
    import java.util.PrimitiveIterator;public class User implements Serializable {private Integer userId;private String uaername;private String password;public Integer getUserId() {return userId;}public void setUserId(Integer userId) {this.userId = userId;}public String getUaername() {return uaername;}public void setUaername(String uaername) {this.uaername = uaername;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public User(Integer userId, String uaername, String password) {this.userId = userId;this.uaername = uaername;this.password = password;}@Overridepublic String toString() {return "User{" +"userId=" + userId +", uaername='" + uaername + '\'' +", password='" + password + '\'' +'}';}public User() {}
    }
    
    package 对象流;import java.io.*;public class ObjectStreamDemo {public static void main(String[] args) throws IOException, ClassNotFoundException {objectInputStreamDemo();}/*** 将已经序列化的文件读入到程序中,并转换java对象* 反序列化*/public static void objectInputStreamDemo() throws IOException, ClassNotFoundException {ObjectInputStream objectInputStream=new ObjectInputStream((new FileInputStream("E:/user.obj")));User user=(User) objectInputStream.readObject();System.out.println(user);objectInputStream.close();System.out.println(user.getUserId());System.out.println(user.getPassword());System.out.println(user.getUaername());}/*** 对象输出流* 使用对象输出流将一个Java对象写出到磁盘的文件中*/public static void objectOutputStreamDemo() throws IOException {User user=new User(107,"jiazhong","123456");//对象输出流ObjectOutputStream objectOutputStream=new ObjectOutputStream(new FileOutputStream("E:/user.obj"));//将user对象写出到文件中objectOutputStream.writeObject(user);objectOutputStream.flush();objectOutputStream.close();}
    }
    

http://www.lryc.cn/news/609322.html

相关文章:

  • 克罗均线策略思路
  • `npm error code CERT_HAS_EXPIRED‘ 问题
  • Java Stream API 编程实战
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 77-1(题目+回答)
  • 《测试驱动的React开发:从单元验证到集成协同的深度实践》
  • 【2025ICCV-目标检测方向】WaveMamba:用于 RGB-红外目标检测的小波驱动曼巴融合
  • 百度招黑产溯源安全工程师
  • SQL注入SQLi-LABS 靶场less31-38详细通关攻略
  • Maxscript在选择的可编辑多边形每个面上绘制一个内部圆形
  • 【高等数学】第七章 微分方程——第十节 常系数线性微分方程组解法举例
  • [硬件电路-140]:模拟电路 - 信号处理电路 - 锁定放大器概述、工作原理、常见芯片、管脚定义
  • 类与对象(中),咕咕咕
  • Zama的使命
  • 零确认双花攻击
  • 8月3日星期日今日早报简报微语报早读
  • 《从原理到实践:MySQL索引优化与SQL性能调优全解析》
  • 【Redis学习路|第一篇】初步认识Redis
  • C的运算符与表达式
  • BP神经网络:当线性模型已到尽头,如何用“人造大脑”挖掘非线性预测规律?
  • 26李林880高数第二章 一元函数微分学及其应用
  • Kafka 是什么?
  • SpringBoot项目数据脱敏(自定义注解)
  • C语言基础03——数组——习题
  • GPIO交换矩阵和IO_MUX
  • 自动驾驶控制算法——LQR控制算法
  • 直流无刷电机(一)
  • C++ <type_traits> 应用详解
  • 10.Redis 数据类型
  • Maximum Subarray Sum II
  • 【超分辨率专题】PiSA-SR:单步Diff超分新突破,即快又好,还能在线调参