一、IO流的操作规律
IO流进行了规律的总结(四个明确):
- 明确一:要操作的数据是数据源还是数据目的。
源:InputStream Reader
目的:OutputStream Writer
先根据需求明确要读,还是要写。
- 明确二:要操作的数据是字节还是文本呢?
源:
字节:InputStream
文本:Reader
目的:
字节:OutputStream
文本:Writer
已经明确到了具体的体系上。
- 明确三:明确数据所在的具体设备。
源设备:
硬盘:文件 File开头。
内存:数组,字符串。
键盘:System.in;
网络:Socket
目的设备:
硬盘:文件 File开头。
内存:数组,字符串。
屏幕:System.out
网络:Socket
完全可以明确具体要使用哪个流对象。
- 明确四:是否需要额外功能呢?
额外功能:
转换吗?转换流。InputStreamReader OutputStreamWriter
高效吗?缓冲区对象。BufferedXXX
二、IO流中的类
字节输入流 InputStream
|- FileInputStream 操作文件的字节输入流
|- BufferedInputStream 高效的字节输入流
字节输出流 OuputStream
|- FileOutputStream 操作文件的字节输出流
|- BufferedOuputStream 高效的字节输出流
字符输出流 Writer
|- OutputStreamWriter 输出操作的转换流(把字节流封装成字符流)
|- FileWriter 操作文件的字符输出流
|- BufferedWriter 高效的字符输出流
字符输出流 Reader
|- InputStreamReader 输入操作的转换流(把字节流封装成字符流)
|-FileReader 操作文件的字符输入流
|- BufferedReader 高效的字符输入流
读数据方法:
read() 一次读一个字节或字符的方法
read(byte[] char[]) 一次读一个数组数据的方法
readLine() 一次读一行字符串的方法(BufferedReader类特有方法)
readObject() 从流中读取对象(ObjectInputStream特有方法)
写数据方法:
write(int) 一次写一个字节或字符到文件中
write(byte[] char[]) 一次写一个数组数据到文件中
write(String) 一次写一个字符串内容到文件中
writeObject(Object ) 写对象到流中(ObjectOutputStream类特有方法)
newLine() 写一个换行符号(BufferedWriter类特有方法)
向文件中写入数据的过程
1.创建输出流对象
2.写数据到文件
3.关闭输出流
从文件中读数据的过程
1.创建输入流对象
2.从文件中读数据
3.关闭输入流
文件复制的过程
1.创建输入流(数据源)
2.创建输出流(目的地)
3.从输入流中读数据
4.通过输出流,把数据写入目的地
5.关闭流