当前位置: 首页 > 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.dtcms.com/a/312893.html

相关文章:

  • MCP革命:AI世界的“USB-C”接口如何重塑智能体与外部工具的连接
  • 均线:从市场脉搏到量子计算的时空密码
  • K8S几种常见CNI深入比较
  • Qt::AA_DontCreateNativeWidgetSiblings使用注意事项
  • 游戏设计原理
  • Flutter开发 dart异步
  • Linux网络编程 ---五种IO模型
  • 基于 Spring Boot + Vue 实现人脸采集功能全流程
  • Python----大模型(从预训练到分布式优化的核心技术解析)
  • 2、RabbitMQ的5种模式基本使用(Maven项目)
  • 迈向透明人工智能: 可解释性大语言模型研究综述
  • ubuntu apt安装与dpkg安装相互之间的关系
  • Python 实例属性与方法命名冲突:一次隐藏的Bug引发的思考
  • 途游Android面试题及参考答案
  • 【GitHub探索】Agent开发平台CozeStudio开源版本踩坑体验
  • pycharm上如何添加conda环境
  • 嵌入式 C 语言入门:多文件编程实践笔记 —— 从文件创建到调用
  • 为何:内存数据断电即逝,硬盘数据牢笼长存
  • LangChain框架概念及简单的使用案例
  • ABP VNext + CloudEvents:事件驱动微服务互操作性
  • 计算机核心概念辨析与解析
  • 24SpringCloud黑马商城部署Java应用后浏览器访问数据库不显示数据的解决办法
  • 可持久化线段树 系列 题解
  • 【Python✨】解决 Conda 安装 MoviePy 报错问题
  • GitCode疑难问题诊疗
  • 12.Redis 主从复制
  • deep research|从搜索引擎到搜索助手的实践(一)
  • 企业自动化交互体系的技术架构与实现:从智能回复到自动评论—仙盟创梦IDE
  • 三、驱动篇-HDF驱动介绍1
  • 语义分割--Fcn