01_异常的概述和分类
*异常:
*概述:程序出现不正常的情况就是异常。
*分类://理解
*
*错误:错误
*服务器宕机,数据库崩溃
*例外:异常,这个才是我们常说的异常
*编译期异常:非RuntimeException及其子类
*运行时异常:RuntimeException及其子类
*案例:老王骑车去西藏
* a。肚子疼//异常
* b。车胎爆了//异常
* c。前方有山洪,地震//错误
* d。路上好多小石子,比较坎坷//异常
* e。自行车丢了//错误
02_编译期异常和运行时异常的区别
*编译期异常:
*必须处理,才能通过编译。
*运行时异常:
*不用处理,也能通过编译。
03_异常的两种处理方式以及区别
*异常的处理方式
*方式一:try-catch-finally语句
*格式:
try {
// 尝试要执行的代码
} catch(异常类型对象名){
//遇到异常后的处理代码
} finally {
//一般是用来释放资源的,正常情况下,里边的代码永远会执行。
}
*方式二:throws声明抛出异常
*异常的处理方式有几种,他们之间有什么区别?
* try-catch-finally:处理完后,程序会接着执行。
* throws:处理完后,程序会终止运行。
04_finally关键字
*终于关键字:
*终于是try-catch-finally语句体的一个模块,一般是用来释放资源的,正常情况下,里边的代码永远会执行。
05_finally关键字的面试题
*题目一:分析如下代码,看方法的返回值是什么?
public static int method1(){
int num = 10;
尝试{
System.out.println(1/0);
num = 20;
的System.out.println( “我是尝试中的输出语句”);
} catch(例外e){
num = 30;
返回号码; // 30
} finally {
num = 40;
的System.out.println( “我是最后中的输出语句”);
}
return 50;
}
*题目二:如果抓中有回,最后里边的代码会不会执行?如果会,只在返回之前还是之后?
*会,在返回之前。
*注意:
*其实严格意义上来讲,是在返回之间,因为返回做两件事:
*看见return后,会先创建一个返回路径记录当前要返回的值;
*返回当前的值,在返回之前,会先执行finally中的代码。
06_File类简介及构造方法
*概述:
*用来操作文件或者文件夹的。
*大白话:其实是用来操作路径的。
*构造方法:
*直接传入文件(夹)的路径
*文件file1 =新文件(“D:\\ bbb \\ a.txt”);
* System.out.println(file1.isFile());
*传入父目录(String)和子文件(夹)名
*文件file2 =新文件(“D:\\ bbb”,“a.txt”);
* System.out.println(file2.isFile());
*传入父目录(文件)和子文件(夹)名
*文件file3 =新文件(“D:\\”);
*文件file4 =新文件(file3,“a.jpg”);
* System.out.println(file4.isFile());
*学文件类的小技巧,先搞定几个单词,再学起来就事半功倍了:
* file:文件
*目录:文件夹
*路径:路径
*绝对:绝对
07_绝对路径和相对路径
*绝对路径和相对路径的区别:
*绝对路径:固定的写“死”的路径,一般是以盘符开头。
*相对路径:一般是相对于当前项目(的路径)来讲的。
08_File类的创建和删除功能
*创建功能:
* createNewFile(); //创建文件,不存在就创建并返回true,存在就不创建返回false
* mkdir(); //创建单级文件夹,不存在就创建并返回true,存在就不创建返回false
* mkdirs(); //创建多级文件夹,不存在就创建并返回true,存在就不创建返回false
*删除功能:
* delete(); //删除文件(夹)注意:Java中的删除不走回收站,要删除的文件夹必须为空。
09_File类的获取功能
*获取功能
* length(); //只能统计文件的大小,单位是字节。如果统计文件夹的大小,结果可能不是你想要的。
* getName(); //获取文件(夹)名字
* getAbsolutePath(); //获取绝对路径的字符串形式
* getAbsoluteFile(); //获取绝对路径的文件对象形式
* getPath(); //创建文件对象的时候,用的是什么路径就返回什么路径。
//一般是用来获取相对路径的。
* getParent(); //获取文件(夹)的父目录的字符串形式
* getParentFile(); //获取文件(夹)的父目录的File对象形式
10_File类的判断功能
*判断功能
* exists(); //判断文件(夹)是否存在
* isFile(); //判断是否是文件
* isDirectory(); //判断是否是文件夹
11_File类的list()&& listFiles()
* String [] list(); //获取指定目录下所有的文件(夹)的名称数组
* File [] listFiles(); //获取指定目录下所有的文件(夹)的对象数组
12_匿名内部类
*格式:
new类名或者接口名(){
//重写所有的抽象方法
};
*本质:
*大白话解释:其实就是一个类或者接口的子类对象。
13_文件名称过滤器(理解)
*获取D盘下,所有后缀名为.jpg的文件。
*思路一:先获取所有,然后遍历获取指定文件。
* a。通过listFiles()获取到D盘下所有的文件(夹)对象。
* b。遍历,获取到每一个文件对象。
* c。然后判断是否是后缀名为.jpg的文件,
*如果是就打印,不是就什么都不操作。
*思路二:在获取的时候,直接获取符合要求的文件。
*通过文件名称过滤器实现。
*文件名称过滤器:
* String [] list(FilenameFilter ff); //文件名称过滤器
* File [] listFiles(FilenameFilter ff); //文件名称过滤器
14递归:
概述:方法自己调用自己
// StackOverflowError:栈内存溢出
注意事项:
1。递归调用方法的次数不能太多,否则会栈内存溢出
2.递归一定要有出口,否则会栈内存溢出
3.构造方法不能递归
15遍历指定路径下的所有文件(包括子目录\子子目录下的文件)
public static void findFileAndDirectory(String path){
// 1.把传入的路径封装成一个文件对象
文件file = new File (路径);
// 2.获取该路径下的所有的子文件\子文件夹
File [] files = file.listFiles();
// 3.遍历获取到的所有子文件\子文件夹;
if(files!= null){
for(File file2:files){
if(file2.isFile()){
System.out.println(file2);
}
if(file2.isDirectory()){
//递归
findFileAndDirectory(file2.getAbsolutePath());
}
}
}
}
16遍历指定路径下的所有.jpg文件(包括子目录\子子目录下的文件)
public static void findJpgFile(String path){
// 1.把出入的路径封装成一个文件对象
文件file = new文件路径);
// 2.获取该路径下的所有的子文件\子文件夹
File [] listFiles = file.listFiles();
// 3.遍历获取到的所有子文件\子文件夹;
if(listFiles!= null){
for(File file2:listFiles){
//如果是文件
if(file2.isFile()&& file2.getName()。endsWith(“。jpg”)){
System.out.println(file2 );
}
if(file2.isDirectory()){
findJpgFile(file2.getAbsolutePath());
}
}
}
}
17计算文件夹的大小
public static long getDirectorySize(String path){
// 1.把传入的路径封装成一个文件对象
文件file = new File(path);
// 2.获取该路径下的所有子文件\子文件夹
File [] files = file.listFiles();
long countSize = 0;
// 3.遍历获取到的所有子文件\子文件夹
if(files!= null){
for(File file2:files){
if(file2.isFile()){
//每遍历到一个文件,就计算该文件的大小,然后累加
long len = file2.length();
countSize + = len;
}
if(file2.isDirectory()){
//递归
countSize + = getDirectorySize(file2.getAbsolutePath());
}
}
}
返回countSize;
}