什么是IO流?
byte序列的读写,Java中的IO流是实现输入/输出的基础.
1)
InputStream : 抽象类读取数据的过程 包含读取方法read();
in 模仿了读取小说的过程
简单说 : in是读取文件的
OutputStream:抽象了写出数据的过程 包含写出方法write();
out模仿了写笔记记录的过程
简单说 : out是写入文件的
基本的byte流
InputStream(抽象方法read())
|--- FileInputStream(read()在文件上读取) 节点流
|
|--- FilterInputStream 过滤器流,输入流功能的扩展
| |--- DataInputStream(readInt()) 基本类型数据的读取
| |--- BufferedInputStream 提供读取缓冲区管理
| --- ObjectInputStream 过滤器流,依赖基本byte流,扩展对象的反序列化
OutputStream(抽象方法write())
|--- FileOutputStream(write()在文件上写实现写入) 节点流
|
|--- FilterOutputStream 过滤器流,输出流功能的扩
| |--- DataOutputStream(writerInt()) 基本类型数据的写出
| |--- BufferedOutputStream 提供了输出缓冲区管理
| --- ObjectOutputStream 过滤器流,依赖基本byte流,扩展对象的序列化
注意:除节点流外都是过滤器流
字符流,可以处理字符编码,底层依赖于byte流
Reader 读取文本
| --- InputStreamReader 过滤去,依赖基本byte输入流
| 实现文本编码的解析
|
| --- BufferedReader 过滤器, 需要依赖Reader 实例
| 提供了readLine()方法, 可以在文本文件中读取一行
| 是常用的文本读取方法
Writer
| --- OutputStreamWriter 过滤器,,依赖基本byte输出流
| 实现文本编码
| --- PrintWriter 过滤器,依赖于Writer 流
| 提供了输出文本常有方法println()
2) EOF = End of File = -1 (文件读到末尾会返回-1)
3) 输入流的基本方法
InputStream in = new InputStream(file) / /file是文件名
int b = in.read(); 读取一个byte无符号填充到int底八位,-1是EOF
int.read(byte[] buf) 读取数据填充到buf中
int.read(byte[] buf,int start,int size) 读取数据填充到buf中
in.close 关闭输入流
4)输出流的基本方法:
OutputStream out = new OutputStream(file) / /file是文件名
out.write(int b) 写出一个byte 到流 b 的底八位写出
out.write(byte[] buf) 将buf的一部分写入流中
out.write(byte[] buf, int start, int size) 将buf的一部分写入流中
out.flush() 清理缓存
out.close
1.FileInputStream (read()在文件上读取) 节点流
方法: read() 从输入流中读取数据的下一个字节
read(byte[] buf) 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 buf中
read(byte[] b, int off, int len) 将输入流中最多 len 个数据字节读入 byte 数组。