Java 异常 File

本文详细介绍了Java中的异常处理,包括异常的概念、分类(编译时异常和运行时异常)、处理方式(JVM默认和自定义捕获)、以及File类的相关操作。通过实例展示了如何使用try-catch语句捕获和处理异常,以及自定义异常的创建和使用。
摘要由CSDN通过智能技术生成

异常

异常是什么

程序中可能出现的问题。

异常体系的最上层父类是谁?异常分为几类?

父类:Exception

异常分为两类:编译时异常,运行时异常

编译时异常和运行时异常的区别

编译时异常:没有继承RuntimeException的异常,直接继承于Exception,编译阶段就会错误提示

运行时异常:RuntimeException本身和子类,编译阶段没有错误提示,运行时出现的

异常的作用

异常是用来查询bug的关键参考信息

异常可以作为方法内部的一种特殊返回值,以便通知调用者底层的执行情况

异常的处理方式

1.JVM默认处理方式

2.自己处理(捕获异常)

import javax.sql.rowset.serial.SerialStruct;
import java.lang.reflect.Array;
import java.util.*;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.IntFunction;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {
    public static void main(String[] args) {
        int[]arr={1,3,4,5,6};
        //好处:可以让程序继续进行
        try {
            System.out.println(arr[10]);
        }catch (ArrayIndexOutOfBoundsException e){
            System.out.println("索引越界");
        }

        System.out.println("hello");

    }
}

如果try里没问题,不执行catch

如果try里面有多个问题,可以写多个对应的catch(如果多个异常,异常中存在父子关系,父类一定写在下面)

如果没有相应catch,交给虚拟机处理

异常的常见方法

getMessage

toString

printStackTrace

public class Main {
    public static void main(String[] args) {
        int[] arr={1,2,3,4,5,6};
        try {
            System.out.println(arr[10]);
        } catch (ArrayIndexOutOfBoundsException e) {
            e.printStackTrace();//打印不会影响程序进行
        }
        System.out.println("hello");
    }
}

抛出异常

public class Main {
    public static void main(String[] args) {
        //定义一个方法求最大值
        int arr[]=null;
        int max= 0;
        try {
            max = getmax(arr);
        } catch (NullPointerException e) {
            System.out.println("空指针异常");
        } catch (ArrayIndexOutOfBoundsException e){
            System.out.println("索引越界异常");
        }
        System.out.println(max);
    }
    public static int getmax(int arr[]){
        if(arr==null){
            throw new NullPointerException();
        }
        if(arr.length==0){
            throw new ArrayIndexOutOfBoundsException();
        }
        int max=arr[0];
        for(int i=0;i<arr.length;i++){
            if(arr[i]>max)
                max=arr[i];
        }
        return max;
    }
}

自定义异常

1.定义异常类

2.写继承关系

3.空参构造

4.带参构造

File

File对象表示一个路径

File的常见成员方法(判断,获取)

import java.io.File;

public class Main {
    public static void main(String[] args) {
        //判断
        File f1=new File("C:\\Users\\86158\\Desktop\\abc.txt");
        System.out.println(f1.isDirectory());//是否是文件夹
        System.out.println(f1.isFile());//是否是文件
        System.out.println(f1.exists());//是否存在

        File f2=new File("C:\\Users\\86158\\Desktop");
        System.out.println(f2.isDirectory());
        System.out.println(f2.isFile());
        System.out.println(f2.exists());

        File f3=new File("C:\\Users\\86158\\Desktop\\abc.txt");
        long len=f3.length();
        System.out.println(len);//返回文件大小(不能是文件夹)
        File f4=new File("C:\\Users\\86158\\Desktop\\abc.txt");
        String absolutePath = f4.getAbsolutePath();//返回文件的绝对路径
        System.out.println(absolutePath);

        File f5=new File("abc.txt");
        String absolutePath1 = f5.getAbsolutePath();//返回文件的绝对路径
        System.out.println(absolutePath1);

        //下面是获取方法
        //getPath 返回定义文件时使用的路径
        //getName 获取名字
        //lastModified 返回最后修改时间
    }
}

File的常见成员方法(创建,删除)

创建

import java.io.File;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        //1.createNewFile
        //不存在返回真
        //反之假
        //父级不存在有异常
        File f1=new File("C:\\Users\\86158\\Desktop\\abc.txt");
        boolean newFile = f1.createNewFile();
        System.out.println(newFile);

        //2.mkdir 创建文件夹
        File f2=new File("C:\\Users\\86158\\Desktop\\add");
        boolean mkdir = f2.mkdir();
        System.out.println(mkdir);

        //3.mkdirs 创建多级文件夹
        File f3=new File("C:\\Users\\86158\\Desktop\\add1");
        boolean mkdirs = f3.mkdirs();
        System.out.println(mkdirs);
    }
}

删除

import java.io.File;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        File f1=new File("C:\\Users\\86158\\Desktop\\jk");
        boolean delete = f1.delete();
        System.out.println(delete);
    }
}

File的成员方法(获取并遍历)

import java.io.File;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        File f=new File("C:\\Users\\86158\\Desktop\\cs");
        File[] files = f.listFiles();
        for(File file:files){
            System.out.println(file);
        }
    }
}
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) throws IOException {
        //1.listRoots 列出所有盘符
        File[] files = File.listRoots();
        System.out.println(Arrays.toString(files));

        //2.list() 获取当前路径下所有内容(仅仅是名字)
        File f1=new File("D:\\course");
        String[] list = f1.list();
        for(String s:list){
            System.out.println(s);
        }

        //3.list() 过滤一下(我没写对??!)
        File f2=new File("D:\\course");
        String[] list1 = f2.list(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                File src=new File(dir,name);
                return src.isFile()&&name.endsWith(".txt");
            }
        });
        System.out.println(list1);
    }
}

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值