Throwable
Error
Exception
RuntimeException -- 修改代码
非RuntimeException -- 异常处理
异常处理:
方式1:捕捉异常处理
try {
// 可能出问题的代码
} catch(异常类名 变量名) {
// 异常处理代码
} finally {
// 释放资源
}
方式2:将异常声明出去
在方法声明上添加 throws + 异常类名
File类:
四类功能:创建、重命名和删除、判断、获取
一、IO流之字节流
1、IO流概述及其分类
按操作的数据类型分:
字节流 -- 可以操作任何文件。
字符流 -- 只能操作用windows自带记事本打开不乱码的文件。(文本文件)
按数据的流向来分;(站在程序的角度)
输入流 -- 从文件读取数据
输出流 -- 向文件写入数据
2、FileInputStream
操作步骤:
A: 创建输入流对象 -- 从文件读取数据,这个文件必须存在
FileInputStream(File file)
FileInputStream(String name)
B: 从文件中读取数据
一次读取一个字节
public int read() throws IOException
重点代码:
int by = 0;
while((by = fis.read()) != -1){
// 获取到了每一个字节
}
C: 释放资源
3、InputStream的read()方法返回值为什么是int
4、FileOutputStream
操作步骤:
A: 创建输出流对象
-- 如果文件不存在,会自动创建。(但是父目录必须存在)
使用如下构造:
FileOutputStream(File file)
FileOutputStream(String name)
-- 如果存在,会把数据清空,从头再写。
如果想追加写入,请使用下面带两个参数的构造:
FileOutputStream(File file, boolean append)
FileOutputStream(String name, boolean append)
B: 向文件中写入数据(因为文件的基本单位就是字节,所以数据可以直接写进去)
一次写入一个字节:
void write(int b)
C: 释放资源
5、FileOutputStream追加
6、字节流练习 - 拷贝图片
操作步骤:
创建输入流对象 -- 封装数据源
创建输出流对象 -- 封装目的地
读写操作
释放资源
一次读写一个字节的方式
7、字节流练习 - 拷贝音频文件画原理图
8、字节数组拷贝之available()方法
一次读写一个字节数组:
int read(byte[] bys)
void write(byte[] bys)
9、字节数组拷贝之定义长度较小的数组
// 读写操作
byte[] bys = new byte[1024 * 8]; // 开发中,一般使用1024的整数倍。
int len;
// 读是读一个字节数组
while((len = fis.read(bys)) != -1) { // len 表示实际读取到的字节数,如果到达流结尾,返回-1
// 写是写入一个字节数组的一部分
fos.write(bys, 0, len);
}
10、字节数组拷贝之定义数组的标准格式
11、BufferedInputStream和BufferOutputStream拷贝
12、flush和close方法的区别
flush方法,刷新缓冲区,把流里面的数据写到文件中去,流对象还是可以继续使用的。
close方法,关闭流对象,并释放与此流有关的所有系统资源。流对象不可再使用。并且关闭之前要先刷新一下缓冲区。
13、字节流读写中文
字节流读取中文,打印到控制台显示,有可能会乱码。
字节流写出中文,需要把字符串转换成字节数组。
14、JDK1.6版本及其以前的版本中流的标准处理异常代码
流操作是底层操作,异常最好抛出。(告知调用者)。将异常抛出,但保证流可以关闭掉。
使用try{}finally{} 的格式,将代码做异常处理。
15、JDK1.7版本流的标准处理异常代码
try(
// 创建流对象的代码 -- 自动关闭(实现了AutoCloseable接口)
) {
// 读写操作
}
-- 上述格式将自动关闭流对象
16、IO流练习 - 图片加密
17、IO流练习 - 键盘录入文件路径,将文件拷贝到当前路径下
要对键盘录入的东西进行判断
18、IO流练习 - 录入数据拷贝到文件
|
|