Java基础进阶Day09
课程大纲
1、IO概述 ---------------------------> 理解 (IO流的基本知识点)
2、四大父类 -------------------------> 理解 (通用方法)
3、增强流 ---------------------------> 重点 (读写数据)
4、IO异常处理 -----------------------> 理解
第一章 IO概述
1、IO思想
A. 输入in 读取 read 文件 -> Java程序
B. 输出out 写出 write Java程序 -> 文件
2、四大父类(将所学类绘制在族谱图中)
InputStream 字节输入(子类代表 FileInputStream)
OutputStream 字节输出(子类代表 FileOutputStream)
Reader 字符输入(子类代表 FileReader) ->(增强 BufferedReader)
Writer 字符输出(子类代表 FileWriter) ->(增强 BufferedWriter)
3、字节文件和字符文件
A.字节文件:
采用windows自带记事本打开全是乱码(图片,音乐,视频,安装文件exe等)
B.字符文件:
采用windows自带记事本打开不是乱码(文本文件...)
C.编码表:
作用: 根据本地语言环境,将字节数字,转换成为对应语言文字符号
理解: 字符文件 = 字节文件 + 编码表
常见编码:
ASCII 美国信息交换标准代码
GBK 汉字内码扩展规范
ISO-8859-1 欧洲编码
UTF-8 万国码
4、IO操作步骤
A.创建对象
B.读写数据
C.释放资源
第二章 四大父类
1、OutputStream方法
A.写数据
public abstract void write(int b) //写入数字,如果写入到文本文件,由于编码表原因,转换为字符
public void write(byte[] b) //写字节数组
public void write(byte[] b, int off, int len) //写入字节数组一部分
B.刷新数据
public void flush() //字节流不刷新可以进入文件,字符流需要刷新才能进入文件(计算机底层是字节)
C.关闭方法(俗称"释放资源")
public void close() //释放资源.包含了刷新功能
2、InputStream方法
A.读数据
public abstract int read() //读取一个字节,返回的是字节
public int read(byte[] b) //读取一个字节,返回的是字节数组的长度
B.关闭方法(俗称"释放资源")
public void close() //释放资源.包含了刷新功能
3、Writer方法
A.基本方法
与 OutputStream 方法类似.(OutputStream有的Writer也有)
B.额外方法
public void write(String str) //写入字符串
public void write(String str, int off, int len) //写入字符串的一部分
4、Reader方法
A.读数据
public int read() //读取一个字符,返回的是字符数组对应的数字
public int read(char[] cbuf) //读取一个字符,返回的是字符数组的长度
B.关闭方法(俗称"释放资源")
public void close() //释放资源.包含了刷新功能
5、注意点
A.换行写入
windows: \r\n
mac: \r
linux: \n
B.追加写入
FileWriter fos = new FileOutputStream("路径", true); //表示追加写入
FileWriter fw = new FileWriter("路径",true); //true表示追加写入
6、综合案例(文件的复制)
A. 二进制文件复制(图片的复制操作) 分别采用字节流 和 字符流
B. 文本文件的复制方式 分别采用字节流 和 字符流
C. 万能的文件复制方式(工具方法.字节流)
第三章 增强流
1、增强流 读取 BufferedReader
A. 构造 BufferedReader br = new BufferedReader(new FileReader("路径"));
B. 特有 String line = br.readLine(); //一次读取一行数据
2、增强流 写入 BufferedWriter
A. 构造 BufferedWriter bw = new BufferedWriter(new FileWriter("路径"));
B. 特有 bw.newLine(); //写入换行符,兼容不同操作系统
3、综合案例
A. 缓冲流复制文本文件
B. 将集合数据写入到文本文件(字符串 和 自定义对象)
C. 将文本文件数据读取到集合(字符串 和 自定义对象)
第四章 IO异常处理
1、JDK1.7以后
try ( FileWriter fw = new FileWriter("fw.txt"); ) {
// 写出数据
fw.write("黑马程序员"); //黑马程序员
} catch (IOException e) {
e.printStackTrace();
}
2、JDK1.9以后(略)