Java IO流
文章目录
一、节点流
1. 字节流
字节流主要用于处理二进制的文件,如图片、音频、视频、doc、pdf
字节输入流
父类:InputStream
子类:FileInputStream …
字节输出流
父类:OutputStream
子类:FileOutputStream …
2. 字符流
字符流主要用于处理纯文本的文件,如txt
用字符流处理图片等文件时会造成文件损坏
字符输入流
父类:Reader
子类:FIleReader
字符输出流
父类:Writer
子类:FileWriter
二、包装流(装饰器设计模式)
包装流的构造器中可以传入一个节点流,包装流可以理解为对节点流的一个封装,对节点流功能的增强,操作更加方便效率也更高。
最终关闭流时只需要调用 包装流的close方法即可,不需要再对节点流进行关闭。因为包装流的close方法其实就是去关闭节点流。
1. 输入流包装
BufferedInputStream
2. 输出流包装
BufferedOutputStream
三、转换流
转换流的特殊之处在于,它可以指定读取或写入时指定文件编码,可以避免一些中文乱码问题
1. 字节输入流转字符输入流
InputStreamReader
2. 字节输出流转字符输出流
OutputStreamWriter
四、注意
- 输出流只有在调用flush()或close()方法时才会真正将数据写入到文件中,所以如果忘记关闭流会造成数据没有被写入
- 输出流的构造器中有一个boolean变量可以指定时追加写入还是覆盖写入,默认时覆盖写入
- 转换流的构造器中传入的是一个待转换的字节流,以及指定的编码