异常、异常的分类及处理、finally关键字、File类(文件及文件夹操作、相对路径与绝对路径、遍历文件及文件夹、递归)、匿名内部类

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;
    }

猜你喜欢

转载自blog.csdn.net/Kfie66/article/details/81569467