IO流基础知识学习

文件流:

文件在程序中是以流的形式来操作的;

流:数据在数据源(文件)和程序(内存)之间经历的路径

输入流:数据从数据源(文件)到程序(内存)的路径

输出流:数据从程序(内存)到数据源(文件)的路径

IO流分类:

按操作数据单位不同分为:字节流(8bit) -> 二进制文件;字符流(字符) -> 文本文件

按数据流的流向不同分为:输入流、输出流

按流的角色不同分为:节点流,处理流/包装流

抽象基类字节流字符流
输入流InputStreamReader
输出流OutputStreamWriter

[Java的IO流共涉及40多个类,都是从上面的四个抽象基类派生的]

节点流和处理流的区别和联系:

1、节点流是 底层流/低级流,直接跟数据相连

2、处理流(包装流)包装节点流,既可以消除不同节点流的实现差异,也可以提供更方便的方法来完成输入输出

例:BufferedReader类中,封装了Reader属性,即:可以封装一个任意的节点流,只要是Reader抽象类的子类

3、处理流对节点流进行包装,使用了修饰器设计模式,不会直接与数据源相连

处理流的功能主要体现:

1、性能的提高:主要以增加缓存的方式来提高输入输出的效率

2、操作的便捷:处理流提供了一系列便捷的方法来一次输入输出大批量的数据,使用更加灵活方便

序列化和反序列化:

(1)序列化就是在保存数据时,保存数据的值和数据类型

(2)反序列化就是在恢复数据时,恢复数据的值和数据类型

(3)需要让某个对象支持序列化机制,则必须让这个类是可序列化的 -> 这个类必须实现如下两个接口之一;

Serializable // 这是一个标记接口,没有方法

Externallizable // 该接口有方法需要实现,因此使用时一般实现上面的 Serializable接口

ObjectOutputStream -> 提供序列化功能

ObjectInputStream -> 提供反序列化功能

对象处理流的序列化和反序列化需注意:

1、读写顺序要一致

2、要求序列化和反序列化对象,需要实现Serializable接口

3、序列化的类中建议添加serialVersionUID 序列化的版本号,可以提高兼容性

4、序列化对象时,默认将里面所有属性都序列化,除了static或transient修饰的成员

5、序列化对象时,要求里面属性的类型也需要实现序列化接口

6、序列化具有可继承性,即如果某类已经实现了序列化,则它的所有子类也已经默认实现了序列化

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值