1.File:文件和目录路径名的抽象表示。

2.绝对路径:带盘符的路径.
相对路径:相对某个文件或文件夹而言的路径.
        当参考的文件与文件夹与当前的文件或文件夹在同一个盘符时:绝对路径!=相对路径.
        当参考的文件与文件夹与当前的文件或文件夹不在同一个盘符时:绝对路径==相对路 径.
    根路径:相对当前项目来说的路径.

3.File类的常用方法
 

eg:public static void main(String[] args) {
         //创建文件对象
         File f1=new File("a.txt");
         
         System.out.println("绝对路径:"+f1.getAbsolutePath());
         System.out.println("相对路径:"+f1.getPath());
         System.out.println("文件名:"+f1.getName());
         System.out.println("是否可读:"+f1.canRead());
         System.out.println("是否可写:"+f1.canWrite());
         System.out.println("是否隐藏:"+f1.isHidden());
         System.out.println("文件内容长度:"+f1.length());
         System.out.println("最后一次修改时间:"+f1.lastModified());
     }    public static void main(String[] args) throws IOException {
         //创建文件对象  第一个值文件名路径  第二个值文件名 File.separator  \
         File f1=new File("c1"+File.separator+"cc"+File.separator+"c.txt");
         
         //判断文件是否存在
         if (f1.exists()) {//存在
             System.out.println("文件存在");
         }else {
             System.out.println("文件不存在");
             //获得当前文件的父目录
             File parentFile=f1.getParentFile();
             if (!parentFile.exists()) {//父目录不存在
                 //创建父目录
                 //parentFile.mkdir();//创建一级目录
                 parentFile.mkdirs();//创建多级目录
                 System.out.println("父目录创建成功");
             }
             
             //判断子文件是否存在
             if (!f1.exists()) {
                 //创建文件
                 f1.createNewFile();    
                 System.out.println("文件创建成功");
             }
         }
     }    public static void main(String[] args) throws IOException {
         //创建文件对象
         File f1=new File("aa");
         
         //判断当前的File对象 是否是文件夹
         if (f1.isDirectory()) {//目录
             //获得当前目录的子文件和子目录
             File[] f1List=f1.listFiles();
             if (f1List.length!=0) {
                 //遍历子文件和子目录,输出名称
                 for (File f2 : f1List) {
                     //获得文件名,并判断是否是以.txt结尾的
                     if (f2.getName().endsWith(".txt")) {
                         System.out.println(f2.getName());
                     }
                 }
                 
             }else {
                 System.out.println("当前文件夹是一个空文件夹");
             }
         }else {
             System.out.println("当前对象是文件");
         }
     }

4.递归:方法自身调用自身.
    4.1:当一个问题可以拆分为若干个子问题,且子问题的解决方法与原问题一样.
    4.2:原问题的解决依赖于所有子问题的解决.
    4.3:递归一定要有出口.
  

eg:public static void main(String[] args) throws IOException {
         //创建文件对象
         File f1=new File("aa");
         
         //判断当前的File对象 是否是文件夹
         if (f1.isDirectory()) {//目录
             isDirectory(f1);
         }else {
             System.out.println("当前对象是文件");
         }
     }
     
     /**
      * 获得当前文件夹下面的所有子文件和子目录
      */
     public static void isDirectory(File f1) {
         //获得当前目录的子文件和子目录
         File[] f1List=f1.listFiles();
         if (f1List.length!=0) {
             //遍历子文件和子目录,输出名称
             for (File f2 : f1List) {
                 判断当前对象是否是文件,如果是文件,并判断是否是以.txt结尾的
                 if (f2.isFile()&&f2.getName().endsWith(".txt")) {
                     System.out.println(f2.getName());
                 }else if(f2.isDirectory()) {//是目录
                     isDirectory(f2);
                 }
             }
         }
     }