5.10JavaIo流四大抽象类

io流是input和output字节流

两大类

面向接口编程

面向父类编程(多态)

特点:

  • 把握父类
  • 实现类关注特点
对输入输出流分类
处理数据
  • 字节流--->处理音频、视频、excel使用字节流
  • 字符流--->处理纯文本,使用字符流

能使用字符处理的地方全部都可以使用字节流处理,能使用字节流处理的地方不一定能使用字符流处理

流向
  • 输入流--->reader
  • 输出流--->write

以程序为中心,进入程序称之为输入流。离开程序称之为输出流

流的功能
  • 始终处于第一线的流称之为--->节点流--->ByteArray、file是节点流
  • 在节点流的基础上进行包装--->处理流--->除了节点流以外的可以理解为处理流

流的操作步骤都是差不多的

四个抽象类

抽象类

说明

常用方法

InputStream

字节输入流的父类,数据单位为字节

int read()void close()

OutputStream

字节输出流的父类,数据单位为字节

void write(int)void flush()void close()

Reader

字符输入流的父类,数据单位为字符

int read()void close()

Writer

字符输出流的父类,数据单位为字符

void write(String)void flush()void close

字节流可以处理一些形式的数据(包括视频、音频等等)

InputStream---输入流超类

源码当中的特点:

  • 实现了closeable接口(Java的底层是JVM,Java程序不能直接和操作系统打交道,所以只能向操作系统申请操作)
  • Java--->文件--->简历了联系--->java虚拟机无法调用垃圾回收机制只能去申请
  • closeable接口继承了AutoCloseable自动关闭接口,在该接口当中有一个关闭方法

常用方法:--->有普通方法和抽象方法

  • void close();--->作用:关闭此输入流并释放与流相关联的任何系统资源
  • abstract int read() throws Exception;--->抽象方法--->作用:从输入流读取数据的下一个字节(返回是int是字节)--->一个一个的去找
  • int read(byte[] b);--->作用:从输入流中读取一些字节数,并将它们存储到缓存器阵列b中(返回的是int因为byte可以转成int)--->一段一段的去找
OutputStream---输出流超类

源码当中的特点:

  • 实现了closeable接口和flushable接口--->强制刷新,避免数据停留在内存中,如果数据不间断的读取每一次都要进行flush操作

常用方法:--->有普通方法和抽象方法

  • void close();--->释放系统资源
  • void flush();--->作用:刷新此输出流并强制任何缓存的输出字节被写出
  • abstract void write(int b);--->作用:将指定的字节写入此输出流--->一个一个的写
  • void write(byte[] b, int off, int len);--->作用:将指定的字节数组写入off是偏移量,从off开始输入到输出流当中,输入长度是len--->一段一段的写
  • void write(byte[] b);--->作用:将b.length字节从指定的字节数组写入此输出流
Reader读取字符的抽象类--->之能是字符,如果是音频、视频等处理不了

源码当中的特点:

  • 实现了closeable接口和AutoCloseable接口还实现了一个可读接口readale

常用方法:

  • int read();--->读取一个字符(一个字符可能多个字节)
  • int read(char[] cbuf);--->将字符读入数组
Writer--->写入字符流的抽象类

源码当中的特点:

  • 实现了接口closeable, Flushable, Appendable(写), AutoCloseable

特点:

  • 全覆盖,从头开始写文件
  • 从尾部追加,从尾开始写。--->是否可以启追加模式,有标识

常用方法:

  • void write(int c);--->写一个字符
  • void write(String str);--->写一个字符串
  • void write(String str, int off, int len);--->写一个字符串的一部分
  •  

It's a lonely road!!!