1、File

    • File类概述和构造方法

      • File:它是文件和目录路径名的抽象表示
        • 文件和目录是可以通过File封装成对象的
        • 对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已,可以是存在的,也可以是不存在的;将来是要通过具体的操作把这个路径的内容转换为具体存在的 | 方法名 | 说明 | | —- | —- | | File(String pathname) | 通过将给定的路径名字符串转换为抽象路径名来创建新的File实例 | | File(String parent, String child) | 从父路径名字符串和子路径名字符串创建新的File实例 | | File(File parent, String child) | 从父抽象路径名和子路径名字符串创建新的File实例 |
    • File类创建功能 | 方法名 | 说明 | | —- | —- | | public boolean createNewFile() | 当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件 | | public boolean mkdir() | 创建由此抽象路径名命名的目录 | | public boolean mkdies() | 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录(创建多级目录) |

    1. /*
    2. File类测试
    3. File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的File实例
    4. File(String parent, String child) 从父路径名字符串和子路径名字符串创建新的File实例
    5. File(File parent, String child) 从父抽象路径名和子路径名字符串创建新的File实例
    6. */
    7. public class FileDemo {
    8. public static void main(String[] args) throws IOException {
    9. // File f1 = new File("D:\\1.JAVA 学习\\IO\\java.txt"); //文件不一定要存在
    10. // System.out.println(f1);
    11. //
    12. // File f2 = new File("D:\\1.JAVA 学习\\IO","java.txt");
    13. // System.out.println(f2);
    14. //需求1:在D:\1.JAVA 学习\IO目录下创建java.txt文件
    15. File f1 = new File("D:\\1.JAVA 学习\\IO\\java.txt");
    16. System.out.println(f1.createNewFile()); //文件存在,不能创建文件,返回false
    17. //需求2:在D:\1.JAVA 学习\IO目录下创建一个目录JavaSE
    18. File f2 = new File("D:\\1.JAVA 学习\\IO\\JavaSE");
    19. System.out.println(f2.mkdir());
    20. //需求3:在D:\1.JAVA 学习\IO目录下创建多级目录JavaWeb\HTML
    21. File f3 = new File("D:\\1.JAVA 学习\\IO\\JavaWeb\\HTML");
    22. System.out.println(f3.mkdirs());
    23. //需求4:在D:\1.JAVA 学习\IO目录下创建文件javase.txt
    24. File f4 = new File("D:\\1.JAVA 学习\\IO\\javase.txt");
    25. System.out.println(f4.createNewFile());
    26. }
    27. }
    • File类判断和获取功能 | 方法名 | 说明 | | —- | —- | | public boolean isDirectory( ) | 测试此抽象路径名表示的File是否为目录 | | public boolean isFile( ) | 测试此抽象路径名表示的File是否为文件 | | public boolean exists( ) | 测试此抽象路径名表示的File是否存在 | | public String getAbsolutePath( ) | 测试此抽象路径名的绝对路径名字符串 | | public String getPath( ) | 将此抽象路径名转换为路径名字符串 | | public String getName( ) | 返回由此抽象路径名表示的文件或目录的名称 | | public String[] list( ) | 返回此抽象路径名表示的目录中的文件和目录的名称字符串数组 | | public File[] listFiles( ) | 返回此抽象路径名表示的目录中的文件和目录的File对象数组 |

    • File类删除功能 | 方法名 | 说明 | | —- | —- | | public boolean delete( ) | 删除由此抽象路径名表示的文件或目录 |

      绝对路径和相对路径的区别:

    • 绝对路径:完整的路径名,不需要任何其他信息就可以定位它所表示的文件。

    • 相对路径:必须使用取自其他路径名的信息进行解释。

    删除目录时的注意事项:

    • 如果一个目录中有内容,不能直接删除,应该先删除目录中的内容,最后才能删除目录

    递归
    递归概述:以编程的角度来看,递归指的是方法定义中调用方法本身的现象。
    递归解决问题的思路:
    把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题求解
    递归的策略只需少量的程序就可以描述出解题过程所需要的多次重复计算

    递归解决问题要找到两个内容:

    • 递归出口:否则会出现内存溢出。f(1)=1,f(2)=1
    • 递归规则:与原问题相似的规模较小的问题。f(n) = f(n-1) + f(n-2)

      1. /*
      2. 递归实现斐波那契数列
      3. */
      4. public class DiguiDemo {
      5. public static void main(String[] args) {
      6. System.out.println(f(20));
      7. }
      8. public static int f(int n) {
      9. if (n == 1 || n == 2) {
      10. return 1;
      11. } else {
      12. return f(n - 1) + f(n - 2);
      13. }
      14. }
      15. }
      1. /*
      2. 递归求阶乘
      3. */
      4. public class DiGuiDemo2 {
      5. public static void main(String[] args) {
      6. System.out.println(f(4));
      7. }
      8. /*
      9. 阶乘:1!=1,2!=1×1!,3!=3×2!
      10. f(n)为n的阶乘
      11. f(n)=n×f(n-1)
      12. */
      13. public static int f(int n) {
      14. if (n == 1) {
      15. return 1;
      16. } else {
      17. return n * f(n - 1);
      18. }
      19. }
      20. }