一、IO流概述
I:Input输入 从其他存储设备【读】数据到内存中 输入过程
O:OutPut输出 从内存中【写】数据到其他存储设备 输出过程
二、IO流分类
1.根据数据的类型分为:
【字节流】和【字符流】
【字节流】:以字节为基本单位,读写数据的流
字节输入流:以字节为基本单位,读数据
字节输出流:以字节为基本单位,写出数据
【字符流】:以字符为基本单位,读写数据的流
字符输入流:以字符为基本单位,读数据
字符输出流:以字符为基本单位,写出数据
2.根据数据的流向分为:
【输入流】和【输出流】
【输入流】:把数据从 其他存储设备 上【读取】到 内存 中的流
字节输入流:以字节为基本单位,读数据
字符输入流:以字符为基本单位,读数据
【输出流】:把数据从 内存 中【写出】到 其他 存储 设备中的流
字节输出流:以字节为基本单位,写出数据
字符输出流:以字符为基本单位,写出数据
3.IO流的顶层父类
- 字节输入流:顶层父类:InputStream --> 抽象类 常见子类:FileInputStream
- 字节输出流:顶层父类:OutputStream --> 抽象类 常见子类:FileOutputStream
- 字符输入流:顶层父类:Reader --> 抽象类 常见子类:FileReader
- 字符输出流:顶层父类:Writer --> 抽象类 常见子类:FileWriter
三、字节输出流OutPutStream
OutputStream 输出流顶层父类
java.io.OutputStream抽象类是所有【字节输出流】的父类,用来【写】出字节输出流
成员方法:
- public void close():关闭次输出流并释放与此流相关联的任何系统资源
- close方法,当完成流的操作时,必须调用此方法,释放系统资源,否则数据写入不完整或消失
- public abstract void write(int b):将指定的字节写入输出流【一个字节一个字节写入到硬盘】
- public void write(byte b[]):将 b.length字节从指定的字节数组写入到此输出流【以字节数组的形式写入到硬盘】
- public void write(byte b[],int off, int len):将指定范围的字节数组的字节数据写到此输出流中【将字节数组中某一段字节数据写到硬盘】
方法逐个演示:
1.写出单个字节数据
// 1.创建字节输出流对象 路径文件必须真实存在
FileOutputStream fos1 = new FileOutputStream("day12_File类与递归&IO流&字符流&字节流\\resources\\a.txt");
// 2.写出 单个字节的数据
fos1.write(72);
// 写入的一个字节数据,我们是往文本文档写入字节数据,但是因为是文本类型,需要将字节数据转换成文本数据,文本就是字符
fos1.write(105);
fos1.write(33);
// 3.关闭流,释放资源
fos1.close();
(运行结束,会在对应的文件中生成对应的字节,代码中写入的数字为ASCII码,每个数字对应一个字母)
2.写出字节数组数据
//1.创建字节输出流对象 真实存在的路径
FileOutputStream fos1 = new FileOutputStream("day12_File类与递归&IO流&字符流&字节流\\resources\\a.txt");
// 2.创建字节数组
b