1.概述
File | 异常 |
---|---|
2.异常
常见异常 | 异常名称 |
---|---|
ArithmeticException | 编译器异常 |
ArrayIndexOutOfBoundsException | 数组角标越界异常 |
NullPointerException | 空指针异常 |
Exception | 其他异常 |
处理异常通常有两种方式
(1). try…catch…finally
下面进行代码演示
public class demo {
public static void main(String[] args) {
Scanner scanner=null;
try{
scanner= new Scanner(System.in);
System.out.println("请输入第一个数");
int a = scanner.nextInt();
System.out.println("请输入第二个数");
int b = scanner.nextInt();
System.out.println(a / b);
}catch(ArithmeticException e){
e.printStackTrace();
}finally {
System.out.println("清理喽");
if(scanner !=null){
scanner.close();
}
}
System.out.println("dsfdgbdfe");
}
}
```java
错误演示
请输入第一个数
2
请输入第二个数
0
清理喽
dsfdgbdfe
java.lang.ArithmeticException: / by zero
at demo3.demo.main(demo.java:15)
正确演示
请输入第一个数
4
请输入第二个数
2
2
清理喽
dsfdgbdfe
(2).throws抛出的是类`
public class demo2 {
public static void main(String[] args) throws NullPointerException,ArithmeticException,IndexOutOfBoundsException{
test(1,0);
System.gc();
}
private static void test(int i, int i1) {
if(i1==0){
throw new ArithmeticException("除数为零了");
}else{
System.out.println(i/i1);
}
}
}
throw抛出的是对象,两者有差距
public class demo {
public static void main(String[] args){
int num=100;
Scanner scanner = new Scanner(System.in);
System.out.println("shueujine");
int i = scanner.nextInt();
if(i<=num){
num-=i;
}else{
throw new NoMoneyException("余额不足");
}
}
}
3.File
(1).创文件,话不多说上代码
File file = new File("b.txt");
File file1 = new File("abc.txt");
file.createNewFile();
file1.createNewFile();
boolean b = file1.renameTo(file);
System.out.println(b);
(2).创单级文件夹,创多层文件夹,话不多说上代码
这里用到了mkdir()和mkdirs()两个方法来创单级和多级文件夹
public class demo {
public static void main(String[] args) throws IOException {
File file = new File("D:\\abc");
file.createNewFile();
file.delete();
File file1 = new File("D:\\9.2122\\BIN");
file1.createNewFile();
file1.delete();
File file2 = new File("D:\\abcd");
file2.mkdir();
file2.delete();
File file3 = new File("D:\\abcde\\abcd\\abc\\ab\\a");
file3.mkdirs();
boolean delete = file3.delete();
System.out.println(delete);
}
}
(3).删除文件夹,话不多说上代码
这里指的是单层文件夹
public class sahndiaomeiyongde {
public static void main(String[] args) {
File file = new File("b.txt");
file.delete();
}
}
(4).删除多层文件夹,话不多说上代码
~~ 这个代码牛逼了,有啥删啥,无可披靡~~
public class zuoye {
public static void main(String[] args) {
//1.删除多级文件夹 递归删除
File file = new File("D://abcde");////abcd//abc//ab//a"
//file.mkdirs();
digui(file);
}
public static void digui(File file){
if(file==null){
return;
}
if(file.exists()){//判断文件是否存在哦
if(file.isFile()){//是文件的话直接删掉
file.delete();
}else if(file.isDirectory()){//是文件夹
File[] files = file.listFiles();
if(files==null){
return;
}
for (File file1 : files) {
digui(file1);//再将前面的步骤重复
}
file.delete();//删除空文件
}
}
}
}