java知识点-IO流

232 阅读2分钟

这是我参与更文挑战的第4天,活动详情查看: 更文挑战

File类的使用

  1. File类的一个对象,代表一个文件或一个文件夹目录
  2. File类声明在java.io包下
  3. File类中涉及文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法。并没有涉及写入或读取文件内容的操作。如果需要实现这些功能,必须使用IO流去完成。
  4. 后续File类的对象常会作为参数传递到流的构造器中,指明读取或写入的“终点”

IO流原理及流的分类

  • 数据单位:字节流、字符流
  • 数据流的流向:输入流、输出流
  • 流的角色:节点流、处理流

image.png

流的体系结构

image.png

image.png

对象流:

ObjectInputStream和ObjectOutputStream

作用:

  • ObjectInputStream:内存中的对象---->存储中的文件、通过网络传输出去:序列化过程
  • ObjectOutputStream:存储中的文件、通过网络传输出去——>内存中的对象:反序列化过程

缓冲流:

作用:提供流的读取、写入的速度

提高读写速度的原因:内部提供了一个缓冲区

处理流,就是套接在已有的流的基础上。

处理流之转换流:

  • InputStreamReader
  • OutputStreamWriter 转换流提供了字节流和字符流之间的转换
  1. 属于字符流
  2. 作用:提供字节流和字符流之间的转换
  3. 解码:字节、字节数组->字符数组、字符串 编码:字符数组、字符串->字节、字节数组

序列化、反序列化

作用:用于存储和读取基本数据类型数据或对象的处理流。它的强大之处在于可以把java中的对象写入到数据源中,也能把对象从数据源中还原回来。

序列化机制:允许把内存中的java对象转换成平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上,或通过网络将这种二进制流传输到另一个网络节点

反序列化:当其他程序获取了这种二进制流,就可以恢复成原来的Java对象

要想一个对象可序列化,需要满足一些要求:

  1. 实现接口:Serializable 标识接口
  2. 对象所在的类提供常量:序列版本号
  3. 要求对象的属性也是可序列化的。(基本数据类型本身是可序列化的)