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();//刪除空文件
}
}
}
}