异常
Error
异常体系最上层的父类:exception
Exception
Throw
异常处理方式
默认处理
自己捕获异常
Try catch
如果try中没有遇到问题,怎么执行?
会把try里面所有的代码全部执行完毕,不会执行catch里面的代码
注意:只有当出现了异常才会执行catch里面的代码
如果try中可能会遇到多个问题,怎么执行?
会写多个catch与之对应
细节:
如果我们要捕获多个异常,这些异常中如果存在父子关系的话,那么父类一定要写在下面
了解性:
在JDK7之后,我们可以在catch中同时捕获多个异常,中间用|进行隔开表示如果出现了A异常或者B异常的话,采取同一种处理方案
如果try中遇到的问题没有被捕获,怎么执行?
相当于try...catch的代码白写了,最终还是会交给虚拟机进行处理。
如果try中遇到了问题,那么try下面的其他代码还会执行吗?
下面的代码就不会执行了,直接跳转到对应的catch当中,执行catch里面的语句体
但是如果没有对应catch与之匹配,那么还是会交给虚拟机进行处理
E.printStackTrance用的最多
如果try中遇到的问题没有被捕获,怎么执行?
相当于try...catch的代码白写了,最终还是会交给虚拟机进行处理。
如果try中遇到了问题,那么try下面的其他代码还会执行吗?
下面的代码就不会执行了,直接跳转到对应的catch当中,执行catch里面的语句体
但是如果没有对应catch与之匹配,那么还是会交给虚拟机进行处理
E.printStackTrance用的最多
都是打印出信息,不会停止程序运行
System.err.println()打印出的是红色字体
E.printStackTrance在底层用的就是这个
抛出处理
核心:告诉调用者出错了,更多写在方法里面
Throws throw
Throw之后
可以用trycatch方法捕获,代码可以继续执行
自定义异常
记得要继承runtimeException 还是写Exception
File类
路径
父级路径 子级路径
File方法
判断、获取
Length
没得看文件夹的大小
Getpath是返回定义文件时使用的路径,可能会返回绝对路径、相对路径,并不一定就是相对路径。
Getname:返回文件的名字+后缀名,或者是文件夹的名字
创建、删除
Createnewfile
存在文件,创建会失败;创建的一定是一个文件,可以是没有后缀名的文件
父级路径不存在,会报错
Mkdir就创不了多级文件夹
Mkdirs:可以创建单级,或者创多级
Delete不走回收站,不能删除有东西的文件夹,只能删文件,或者是空文件夹
File获取并遍历(最重要)listfiles返回一个file数组
存的是路径下的文件夹和文件
如是空文件夹,返回长度为0的数组
listFiles(FileFilter filter)
重写accept方法,形参是文件的完整路径,过滤出想要的文件
listFiles(FilenameFilter filter)
重写accept方法,形参是父级路径和子级路径,合在一起就是完整路径
不能删除一个带有内容的文件夹
.
public static HashMap<String, Integer> countFile2(File f) {
//创建hashmap存文件类型和数量
HashMap<String, Integer> hm = new HashMap<>();
File[] arr = f.listFiles();
if (arr != null) {
for (File file : arr) {
//判断是不是文件
if (file.isFile()) {
String[] s = file.getName().split("\\.");
if (s.length >= 2) {
String name = s[s.length - 1];
if (hm.containsKey(name)) {
int count = hm.get(name);
hm.put(name, ++count);
} else {
hm.put(name, 1);
}
}
} else {//文件夹
//递归得到
Set<Map.Entry<String, Integer>> entries = countFile2(file).entrySet();
for (Map.Entry<String, Integer> entry : entries) {
if (hm.containsKey(entry.getKey())) {
//已存在相同类型的文件,数量叠加
hm.put(entry.getKey(), entry.getValue() + hm.get(entry.getKey()));
} else {
//不存在相同类型的文件
hm.put(entry.getKey(), entry.getValue());
}
}
}
}
}
return hm;
}