### IO流 * 概述 * I(input),O(output)其实就是数据流 * 其实IO流就是程序中用于控制数据传输的抽象表现 * 分类 * 以数据的流向分类:以程序为基准 * 输入流:从外界把数据传输到程序中 * 输出流:从程序向外界传输数据 * 举例: * 用记事本打开有内容的a.txt文档:将硬盘上的a.txt文档数据传输到记事本程序中,以记事本为基准,则是输入流 : 硬盘 ---> 记事本程序 * 将a.txt文档中的内容用记事本重新编辑成新的内容。以记事本为基准,则是输出流:记事本程序 ---> 硬盘 * 以处理的数据类型: * 字节流:传输的数据是字节数据 * 字符流:传输的数据是字符数据 * 字节输入流 InputStream 读数据 * 字节输出流 OutputStream写数据 * 字符输入流 Reader * 字符输出流 Writer ### 字节流 1. 概述: 1. 字节输出流:java.io.OutputStream * OutputStream是字节输出流的抽象类,有很多的子类,输出数据的位置和操作的字节数据各有不同 2. 字节输入流:java.io.InputStream * InputStream是字节输入流的抽象类 2. FileOutputStream * 概述:对文件进行操作的字节输出流 * 构造: * FileOutputStream(String path):创建一个输出流对象和定义路径的文件进行关联 * FileOutputStream(File file) * 常用功能 1. write(int by); 一次写一个字节数据 2. write(byte[] by); 一次写一个字节数组的数据 3. write(byte[] by, int index, int len);一次写一个字节数组的一部分 4. close(); 释放资源 * 换行和追加写入数据 1. 换行: \r\n 或者 System.lineSeparator(); 2. 追加写出数据: 在输出流构造方法后加一个true 3. FileInputStream * 概述:对文件进行读取数据操作的字节流类 * 构造: 1. FileInputStream(String path): 创建一个输出流对象和指定路径的文件进行关联 2. FileInputStream(File file) 创建一个输出流对象和指定File对象对应的文件进行关联 * 常用功能 1. int read() 一次读一个字节数据 2. int read(byte[] bys) 一次读一个字节数组的数据,返回实际读取到的字节数 4. 字节流复制文件 * 思路 1. 用输入流关联数据源,用输出流关联数据目的地 2. 先输入流读数据,读到数据之后输出流写出去 * 代码实现 * 见上课代码。 ### 字符流 1. 概述 * 专门用于处理字符数据的类 * 字符输入流 Reader * 字符输出流 Writer 2. FileReader * 概述:操作文本的字符输入流 * 构造: 1. FileRear(String path) 2. FileRear(File file) * 常用功能 1. int read() 一次读一个字符数据,返回读到的字符对应的整数值 2. int read(char[] ch) 一次读一个字符数组的数据,返回实际读取到的长度 3. FileWriter * 概述:操作文本的字符输出流 * 构造: 1. FileWriter(String path) 2. FileWriter(File file) * 常用功能 1. write(String str) 一次写一个字符串 2. write(String str, int index, int len) 一次写一个字符串的一部分 3. write(int ch) 一次写一个字符 4. write(char[] chs) 一次写一个字符数组 5. write(char[] chs, int index, int len) 一次写一个字符数组的一部分 * close和flush 1. close:释放资源;如果缓冲区中有数据帮你刷新缓冲区。但是close之后不能再写数据。 2. flush:将缓冲区中的数据刷到指定的文本中。刷新后还可以再继续写数据。 今天就分享这些,下次再见!
|