IO流
IO流分类 按照操作的数据不同分类
字节流
操作的是一个个的字节,字节是计算机中最基本的单位,一切数据都是由字节构成的
所以字节流可以操作计算机上一切数据 比如 文本 视频 音频 图片等等
字符流
- 操作的是一个个的字符,只能操作文本文件
- 什么是文本文件:使用记事本打开不乱码的文件 比如:.txt .java .css .html .js .xml
- 注意:word和excel不是文本文件
- 按照流向不同
- 输入流 Input
- 输出流 Output
- 字节输入流
- InputStream
- read 读字节
- FileInputStream
- InputStream
- 字节输出流
- OutputStream
- write写字节
- FileOutputStream
- OutputStream
- 字符输入流
- Reader
- read 读字符
- FileReader
- Reader
- 字符输出流
- Writer
- write 写字符
- FileWriter
- Writer
- IO流的命名规则:一般情况下都是前面是这个流能干什么 后面是这个流的顶级父类是谁
java.io.OutputStream 所有字节输出流的超类 抽象类
- 方法
- void write(int b) 写一个字节
- void write(byte[] bytes)写一个字节数组
- void write(byte[] bytes,int start,int length)写一个字节数组的一部分
- void close()关闭资源
常用子类
java.io.FileOutputStream
- 构造方法 绑定数据目的
- public FileOutputStream(File file)
- public FileOutputStream(String path)
注意:如果指定位置没有对应的文件则创建一个新的空文件
如果指定位置已经有了对应的文件 则覆盖<br /> 如果路径不存在 则抛出FileNotFoundException
- 构造方法 绑定数据目的
- 创建FileOutputStream对象
- 调用write方法
- 关闭资源
文件的续写与换行
文件的续写
方法
- int read()读一个字节 返回值为读取到的数据 如果没有数据了 返回-1
- int read(byte[]bytes)读一个字节数组
- void close()关闭资源
- 常用子类
- java.io.FileInputStream
- 构造方法 绑定数据源
- public FileInputStream(File file)
- public FileInputStream(String path)
- 构造方法 绑定数据源
- java.io.FileInputStream
- 创建字节输入流对象
- 调用read方法读取数据
- 关闭资源
使用字节流读中文 可以读取中文 但是不方便我们查看 因为 我们不认识字节
但是我们认识字符 所以当查看文本数据时 一般选择使用字符流
java.io.Reader 字符输入流的超类 抽象类
方法
- int read()读一个字符 返回值是读取的字符 如果没有数据 则返回-1
int read(char[] chs)读一个字符数组
字符数组作为缓冲区 数据都存放在字符数组中 返回值返回每次读取的有效字符数 如果没有数据返回-1int close()关闭资源
- 常用子类
- java.io.FileReader
- 构造方法 绑定数据源
- public FileReader(File file)
- public FileReader(String path)
- 构造方法 绑定数据源
- java.io.FileReader
- 创建字符输入流对象
- 调用read方法读数据
- 关闭资源
java.io.Writer 所有字符输出流的超类 抽象类
- 方法
- write(int c) 写一个字符
- write(char[] chs)写一个字符数组
- write(char[] chs,int start,int length)写字符数组的一部分
- write(String s)写字符串
- flush()刷新缓冲区 不刷新数据不进入到数据目的
- close()关闭资源
- 常用子类
- java.io.FileWriter
- 构造方法
- public FileWriter(File file)
- public FileWriter(File file,boolean append)
- 构造方法
- java.io.FileWriter
- 字符输出流 写数据后必须刷新 不刷新数据不进入到数据目的
flush和close的区别
flush叫做刷新缓冲区 将数据从缓冲区中刷新到数据目的 对于字符输出流 必须要刷新<br /> 刷新后 还可以继续写数据<br /> close叫做关闭资源 只是在关闭之前会进行一次刷新 流关闭后 不能再写数据了 会抛异常
java.util.Properties
- 特点
- 实现了Map接口 可以使用Map的所有方法
- 没有泛型 键是String 值String
- 唯一一个可以和IO流直接结合使用的集合
方法
和IO流结合使用
- void load(InputStream in) 将配置文件中的键值对加载到集合中
- void load(Reader r)
InputStream in:所有字符输入流的超类 抽象类
可以传入其任意子类对象 FileInputStreamReader r:所有字符输入流的超类 抽象类
可以传入其任意子类对象 FileReader
