第五章:IO流 (java.io包中)
一、理解 1. 简单而言:流就是内存与存储设备之间传输数据的通道、管道。
2. 分类: (1) 按方向(以JVM虚拟机为参照物)【重点】 输入流:将中的内容读入到中。 输出流:将中的内容写入到中。
(2) 按单位: 字节流:以字节为单位,可以操作所有类型的文件。 字符流:以字符为单位,只能操作文本类型的文件。
(3) 按功能: 节点流:具有基本的读写功能。 过滤流:在节点流的基础上,增加新的功能。
二、字节流 1. 父类:字节流的父类(抽象类):
(1) InputStream:字节输入流 对应的操作为读操作 功能方法:read方法
(2) OutputStream:字节输出流 对应的操作为写操作 功能方法:write方法
2. 字节节点流 (1) FileOutputStream:字节节点输出流 、文件字节输出流 构造方法: FileOutputStream fos = new FileOutputStream("D:\\test56/a.txt"); 参数:代表操作文件的路径,如果指定的文件夹不存在,则运行报错,错误信息为: java.io.FileNotFoundException: D:\test5\a.txt (系统找不到指定的路径。);如果指定的 文件不存在,系统自动创建 绝对路径:盘符:\\文件夹\\ 文件 相对路径:文件夹/文件,默认在当前的项目中查找对应的文件夹内容 功能方法: write(int n):将单个字节写入文件中 close():关闭流 (2) FileInputStream:文件字节输入流
3. 字节过滤流 构造方法: FileInputStream fis = new FileInputStream("file/c.txt"); 参数说明:参数代表操作路径,如果指定的文件不存在,则运行报错,错误信息为: java.io.FileNotFoundException: file\c.txt (系统找不到指定的文件。) 功能方法: int read():一次性读取一个字节内容,将读取的内容作为返回值返回,达到文件尾部时,返回-1 close():关闭流,释放资源
(1) 过滤流:BufferedOutputStream/BufferedInputStream 缓冲流,提高IO效率,减少访问磁盘的次数; 数据存储在缓冲区中,flush是将缓存区的内容写入文件中,也可以直接close。
三、字符流
1. 字符流的父类(抽象类): Reader:字符输入流 对应的操作为读操作 功能方法:read方法 Writer:字符输出流 对应的操作为写操作 功能方法:write方法
2. 文件字符流 (1) FileWriter文件字符输出流,继承Writer中的方法: public void write(int n):将单个字符写入到文件中 (2) FileReader文件字符输入流,继承Reader中的方法: public int read():一次读取一个字符的内容
3. 字符过滤流 (1) BufferedReader: 功能方法,readLine():一次性读取一行内容,返回内容为String,读取达到尾部,返回-1 (2) PrintWriter println(参数);
4. 桥转换流
四、File类 1. IO流:对文件中的内容进行操作。 File类:对文件自身进行操作,例如:删除文件,文件重新命名等。
2. 操作
public class TestFile { public static void main(String[] args) throws IOException { File file = new File("file/hh.txt"); /*System.out.println(file.exists()); file.createNewFile();*/ if(file.exists()){ System.out.println("文件存在,则直接使用..."); FileInputStream fis = new FileInputStream(file); }else{ System.out.println("文件不存在,创建新的文件...."); file.createNewFile(); } } }