JavaSE基础——异常、File文件类

1. 异常

   (1)异常的概述

     异常就是Java程序在运行过程中出现的错误。

   (2)分类

     Throwable 类是 Java 语言中所有错误或异常的超类。
       异常的 Exception和Error都是Throwable的直接子类;Exception 又可以分为运行期异常和编译期异常。

   (3)异常的处理方式:

     ● 声明异常throws

//声明异常的格式:
修饰符 返回值类型 方法名 (参数) throws 异常类名1,异常类名2...{ }

代码演示:

public class Demo {
    public static void main(String[] args) throws Exception {
        show(-1);

    }
    public static void show(int i) throws Exception {
        if (i < 0){
            throw new Exception("输入的数小于0");
        }else{
            System.out.println(i);
        }
    }
}

在这里插入图片描述
     ● 捕获异常 try…catch…finally

//捕获异常的格式
//如果异常名出现了子父关系,必须要把父类异常类名放在最后面。
try{
    //可能出现异常的代码
    ......
}catch(异常类名1 变量){
    //处理异常的语句
    ......
}catch(异常类名2 变量){
    //处理异常的语句
    ......
}
catch(异常类名... 变量){
    //处理异常的语句
    ......
}finally{
   //一定会被执行的语句
   ......
}

代码演示:

public class Demo1 {
    public static void main(String[] args) {
        try {
            System.out.println(1/0);
        }catch (Exception ex){
            System.out.println("除数为0");
        }finally {
            System.out.println("一定会被执行的语句");
        }
    }
}

在这里插入图片描述

   (4)Throwable中的常用方法

1getMessage():			获取异常信息,返回字符串。
2toString():				获取异常类名和异常信息,返回字符串。
3printStackTrace():		获取异常类名和异常信息,以及异常出现在程序中的位置。
public class Demo2 {
    public static void main(String[] args) {
        int[] arr = new int[10];
        try {
            for (int i = 0; i < arr.length; i++) {
                arr[i+1] = i;
            }
        } catch (ArrayIndexOutOfBoundsException e) {
            String message = e.getMessage();
            System.out.println(message);
            String string = e.toString();
            System.out.println(string);
            e.printStackTrace();
        }finally {
            System.out.println("一定执行的语句");
        }
    }
}

在这里插入图片描述

   (5)处理异常的原则

    ● 如果该方法内部能解决该异常,就使用try catch ,如果处理不了,就使用throws抛给调用者处理。如果后续程序需要继续执行就使用try catch,后续程序不需要执行就使用throws。

2. File 文件类

   (1)概述

     File类就是File文件和目录路径名的抽象表述形式,即Java把文件或者目录文件夹都封装成 File 对象。

   (2)File 类的构造方法

1File(String pathname): 根据一个路径得到一个File对象
2File(String parent,String child): 根据一个父目录和子文件或子目录得到File对象。
3File(File parent,String child): 根据一个父File对象和子文件或子目录得到一个File对象。 

   (3)File 类的创建功能

1public boolean creatNewFile(): 创建一个新的文件,若这个文件已经存在,就不会再创建。
2public boolean mkdir(): 创建文件夹,若存在,就不会再创建(这个方法只能创建单层目录)。
3public boolean mkdirs(): 创建文件夹,若父类文件目录不存在,就自动帮你创建出来,可以创建多层目录。

   (4)File 类的删除功能

public boolean delete():删除文件或文件夹。

   (5)File 类的重命名

public boolean renameTo(File dest): 把文件重命名为指定的文件路径。

   (6)File 类的判断功能

1public boolean isDirectory(): 判断是否是目录
2public boolean isFile():	判断是否是文件
3public boolean exists():	判断是否存在
4public boolean canRead(): 判断是否可读
5public boolean canWrite(): 判断是否可写
6public boolean isHidden(): 判断是否隐藏

   (7)File 类的获取功能

1public String getAbsolutePath(): 获取绝对路径。
2public String getPath(): 获取相对路径。
3public String getParent(): 返回此抽象路径名父目录的路径名字符串,如果此路径没有指定的父目录,就返回null。
4public File getParentFile(): 返回此抽象路径名父目录的抽象路径名,如果此路径没有指定的父目录,就返回null。
5public long getTotalSpace(): 返回此抽象路径名指定的分区大小,返回总容量,单位字节。
6public long getFreeSpace(): 返回此抽象路径名指定的分区中未分配的字节数。返回剩余容量,单位字节。 
7public String getName(): 获取此文件路径的文件的名称。
8public long length(): 获取此路径的文件的长度(字节数)。
9public String[] list(): 获取指定目录下的所有文件或者文件夹的名称数组。
10public File[] listFiles(): 获取指定目录下的所有文件或者文件夹的File数组。

文件类的案例:

(1)删除多级文件夹

import java.io.File;

public class FileDemo {
    //1.删除多级文件夹 递归删除
    public static void main(String[] args) {
        File file = new File("F:\\Program Files");
        deleteFolders(file);
    }

    private static void deleteFolders(File file) {
        File[] files = file.listFiles();
        for (File file1 : files) {
            if (file1.isFile()){
                file1.delete();
            }else{
                deleteFolders(file1);
            }
            file1.delete();
        }
        file.delete();
    }
}

(2)判断多级目录下是有以 .jpg的文件,如果有,把后缀名改成.png 递归修改

import java.io.File;

public class FileDemo2 {

    //3.判断多级目录下是有以 .jpg的文件,如果有,把后缀名改成.png 递归修改

    public static void main(String[] args) {
        File file = new File("F:\\aabb");
        folderrename(file);
    }

    private static void folderrename(File file) {
        File[] files = file.listFiles();
        for (File file1 : files) {
            if (file1.isFile()){
                String name = file1.getName();
                if (file1.isFile() && name.endsWith(".jpg")){
                    String substring = name.substring(0,name.indexOf(".")+1);
                    String newName = substring.concat("png");
                    File file2 = new File(file, newName);
                    file1.renameTo(file2);
                }
            }
            else{
                folderrename(file1);
            }
        }
    }
}

发布了58 篇原创文章 · 获赞 7 · 访问量 2297

猜你喜欢

转载自blog.csdn.net/weixin_42492089/article/details/103039993