File,递归

一、File类

1.File类介绍

计算机的文件系统中包含文件和文件夹。
java.io.File代表操作系统的文件/文件夹对象
File类提供了诸如:获取文件的信息、删除文件、创建文件(文件夹)等功能。

File类的作用:

File对象可以用来定位文件或文件夹。获取文件的信息、删除文件、创建文件(文件夹)等功能。

2.File类构造方法

java.io.File类是通过路径名定位文件和文件夹,主要用于文件和目录的创建、查找和删除等操作

方法名

说明

File(String pathname)

通过路径名字符串创建File对象

File(String parent, String child)

从父路径名字符串和子路径名字符串创建File对象

File(File parent, String child)

从父抽象路径名和子路径名字符串创建File对象

注意:

  • 斜杠问题: \在字符串中要写2个 \ , Windows系统中路径支持 \和/ , Linux系统只支持/
  • File封装的对象仅仅是一个路径名。这个路径可以是存在的,也可以是不存在的。
3.File类创建功能

File类可以创建文件和文件夹

方法名

说明

public boolean createNewFile()

创建一个新的文件

public boolean mkdir()

创建一个单级文件夹

public boolean mkdirs()

创建一个多级文件夹

4.File类删除功能

File类可以删除文件和文件夹

方法名

说明

public boolean delete()

删除文件或文件夹

删除目录时的注意事项

  • delete方法直接删除不走回收站。
  • 如果删除的是一个文件,直接删除。
  • 如果删除的是一个文件夹,需要先删除文件夹中的内容,最后才能删除文件夹
5.绝对路径和相对路径
  • 绝对路径从盘符开始:
File file1 = new File("D:\\MyFileTest\\aaa\\bbb.flv");
  • 相对路径不带盘符,默认从当前项目下的开始寻找:
File file1 = new File(“模块名\\xxx.png");
6.File类判断和获取功能

File类可以表示文件或文件夹,以及获取相关信息。

方法名

说明

public boolean isDirectory()

判断是否是文件夹

public boolean isFile()

判断是否是文件

public boolean exists()

判断是否存在

public String getAbsolutePath()

返回File对象的绝对路径

public String getName()

获取名字

public String getParent()

获取父路径

public long length()

获取文件大小

7.File类遍历功能

File类的listFiles()可以显示文件夹中的所有内容(相当于双击文件夹)

方法名

说明

String[] list()

获取文件夹里面的内容,以字符串的形式返回

public File[] listFiles()

获取文件夹里面的内容,以File对象的形式返回

注意: 只有文件夹才能调用listFiles()。

二、递归

1.递归概述
  • 什么是递归?:方法自己调用自己
public class Demo08 {
	public static void main(String[] args) {
    	diGui();
    }
    public static void diGui() {        
    	System.out.println("num = " + num);
        diGui();    
    }
}
  • 递归注意事项:①递归要有出口 (递归要能够停下来), ②递归次数不能太多
  • 递归思想
    把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解
    递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算
  • 递归解决问题要找到两个内容
    递归出口:否则会出现内存溢出
    递归规则:与原问题相似的规模较小的问题
2.递归求1 ~ n的和案例

(1)案例分析:

java 递归文件目录 java递归创建文件夹_字符串

(2)递归求1 ~ n的和代码实现

public class Case {
    public static void main(String[] args) {
        int sum = getSum(5);
        System.out.println("sum = " + sum);
    }    
    // 根据递归的规律写一个递归的方法    
    // getSum方法的作用: n是几就求1到几的和
    public static int getSum(int n) {
        // 当n=1时,返回1
        if (n == 1) {
            return 1;
        }
        // 1到n的和 = n + 1到n-1的和
        return n + getSum(n-1);
    }
}

(3)执行流程分析

java 递归文件目录 java递归创建文件夹_递归_02

3.文件搜索
搜索 某个文件夹中的所有java文件, 如果文件夹中有文件夹也要找出来
步骤:
    1.创建一个File对象表示aaa文件夹
    2.定义一个方法listJava(File dir), 列出某个文件夹中的所有java文件
    2.1.调用listFiles()显示文件夹中的所有内容
    2.2.遍历获取每个内容
    2.3.判断如果是文件,并且是.java文件,打印这个文件
    2.4.如果是文件夹,再次调用listJava
//搜索 某个文件夹中的所有java文件, 如果文件夹中有文件夹也要找出来
public class Case {
	public static void main(String[] args) {
        File file = new File("D:\\MyFileTest\\aaa");
        listJava(file);
    }
    public static void listJava(File dir) {
        File[] files = dir.listFiles(); 
        // 2.1.调用listFiles()显示文件夹中的所有内容
        for (File file : files) { 
            // 2.2.遍历获取每个内容
            // 2.3.判断如果是文件,并且是.java文件,打印这个文件
            if (file.isFile()) {
            // 是文件                
                if (file.getName().endsWith(".java")) {
                System.out.println(file);
                }
            } else {
                listJava(file); // 2.4.如果是文件夹,再次调用listJava
            }
        }
    }
}