IO流
概念
- 流按流向分为两种:输入流,输出流。
- 流按操作类型分为两种:
- 字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的
- 字符流 : 字符流只能操作纯字符数据,比较方便。
IO流分类
- 字节流
- InputStream(抽象类):字节输入流
- FileInputStream(实现类):read() 读取一个字节
- BufferedInputStream(装饰类):带缓冲区
- FileInputStream(实现类):read() 读取一个字节
- OutputStream(抽象类):字节输出流
- FileOutputStream(实现类):write(int) 写出一个字节
- BufferedOutputStream(装饰类):带缓冲区
- FileOutputStream(实现类):write(int) 写出一个字节
- InputStream(抽象类):字节输入流
- 字符流
- Reader(抽象类):字符输入流;字符流读取字符, 需要把字节转为字符再读入
- FileReader(实现类):read() 字符流读取字符, 需要把字节转为字符再读入
- BufferedReader(装饰类):带缓冲区
- FileReader(实现类):read() 字符流读取字符, 需要把字节转为字符再读入
- Writer(抽象类):字符输出流
- FileWriter(实现类):write() 字符流写出字符, 需要把字符转为字节再写出
- BufferedWriter(装饰类):带缓冲区
- FileWriter(实现类):write() 字符流写出字符, 需要把字符转为字节再写出
- Reader(抽象类):字符输入流;字符流读取字符, 需要把字节转为字符再读入
- 转换流
- InputStreamReader:输入字节流转输入字符流;可指定码表
- OutputStreamWriter:输出字节流转输出字符流;可指定码表
常见问题
-
字节流是可以写字符串,但是必须将字符串转换成字节数组写出去
FileOutputStream fos = new FileOutputStream("a.txt"); fos.write("你好".getBytes()); fos.close();
-
字符流也可以拷贝文本文件, 但读取时要把字节转为字符, 写出时还要把字符转回字节
-
flush方法与close方法的区别:
- flush是用来刷新缓冲区的,刷完之后还可以写出
- close方法是用来关闭流的,在关闭之前会刷新一次缓冲区,刷完之后关闭,不可以再写出
-
BufferedReader的readLine()方法可以读取一行字符 (不包含换行符号)
-
BufferedWriter的newLine()可以输出一个跨平台的换行符号 "\r\n"
网友评论