目录
阐述
try...catch异常处理的流程
try...catch的写法为:try{可能出现异常的代码}catch(异常类名 变量名) {异常 的处理代码}
程序从try开始执行,出现异常就跳转到catch里执行。该语句执行完毕后,程序还可以继续向下执行。
拓展知识
try...catch...finally:finally后面跟花括号,里面写不管有没有异常都执行的代码,通常用于关闭流来释放资源。
try-with-resource:这是JDK1.7出来的新特性,是一种语法糖,可以自动关闭流。写法为try(创建需要自动关闭的资源) {可能出现异常的代码}catch(异常类名 变量名) {异常 的处理代码},这样不需要再写final{}了。被自动关闭的资源需要实现Closeable接口或AutoCloseable接口,只有这两个接口才能自动调用close()关闭资源。
语法糖:指计算机语言中添加的某种语法,这种语法对语言的功能没有影响,但是更方便程序员使用。通常使用语法糖能增加程序的可读性,从而减少程序代码出错的机会。
File类的功能
1.创建 目录、文件
2.获取 文件名、(相对)路径、绝对路径
3.删除 目录、文件
4.判断 是否存在、是否是目录、是否是文件
IO流的应用场景和分类
常见应用:文件的 复制、上传、下载
分类:按类型分字符流和字节流;按流向分输出流和输入流
课后作业
File类创建、删除、获取功能
File file = new File("d:\\a.txt");
File dirFile = new File("d:\\pDir\\sDir");
file.getAbsoluteFile();
file.getPath();
file.getName();
file.delete();
dirFile.delete();
FileOutputStream的三种方式写数据
//一次写一个字节
fos.write(4);
//一次写一个字节数组
byte[] arr = {1,5,8,33};
fos.write(arr);
//一次写一个字节数组的一部分
fos.write(arr, 2, 2);
追加写入和换行
//第二个参数默认false,重新写入;true是追加写入
// FileOutputStream fos = new FileOutputStream("a.txt");
FileOutputStream fos = new FileOutputStream("a.txt", true);
//换行
fos.write("\r\n".getBytes());
复制文本文件或复制图片
FileInputStream fis = new FileInputStream("b.txt");
//一次读取一个字节
int by; //用来记录每次读取的数据
while ((by = fis.read()) != -1) {
fos.write(by);
System.out.println((char) by);
}
//一次读取一个字节数组
byte[] b = new byte[1024]; //定义一次最多可读的字节数组
int len; //用来记录读取到的有效字节的个数;声明局部变量,可以不立即初始化,但是调用前必须赋值
while ((len = fis.read(b)) != -1) {
fos.write(b, 0, len);
System.out.println(new String(b, 0, len));
}
别忘了关闭流,释放资源
fis.close();
fos.close();