1、创建file的构造方法

image.png

2、file常见的方法

image.pngimage.png注意:mkdir只能创建单级文件夹,mkdirs可以创建多级文件夹。

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

public class Test {
    public static void main(String[] args) throws IOException {
        File file = new File("F:\\test\\files\\test01.txt");
        final boolean newFile = file.createNewFile();
        System.out.println(newFile);
    }

}

使用delete的细节:可以直接删除文件或者空的文件夹,有文件的文件夹不可以直接删除,并且不会走回收站。

3、获取并遍历(listFiles)

3.1、作用:获取文件夹下面的所有文件,包括文件和文件夹,返回一个数组。

基本使用如下所示:

import java.io.File;

public class Test02 {
    public static void main(String[] args) {
        File file = new File("F:\\test\\files");
        final File[] files = file.listFiles();
        for (File file1 : files) {
            System.out.println(file1);
        }
        
    }
}

输出结果:

F:\test\files\test01.txt F:\test\files\test02

其中使用的细节:

4、练习题目

4.1、在当前模块下的aa文件夹中创建一个a.txt的文件

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

/**
 * 在当前模块下的aa文件夹中创建一个a.txt的文件
 *
 * */
public class Question1 {
    public static void main(String[] args) {
        File file = new File("./aa");
        file.mkdirs();
        //将文件路径拼接
        File file1 = new File(file,"a.txt");
        try {
            final boolean newFile = file1.createNewFile();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

4.2、定义一个方法找某个文件夹中是否有以*.txt结尾的文件(*暂时不需要考虑子文件夹)

import java.io.File;

/**
 * 定义一个方法找某个文件夹中是否有以.txt结尾的文件(暂时不需要考虑子文件夹)
 *
 * */
public class Question2 {
    public static void main(String[] args) {
        File file = new File("F:\\test\\test01");
        boolean flag = findFile(file);
        System.out.println(flag);
    }

    //定义方法
    public static boolean findFile(File file){
        //获取所有的文件
        final File[] files = file.listFiles();
        for (File f : files) {
            return f.isFile() && f.getName().endsWith(".txt");
        }
        return false;
    }

}

4.3、定义一个方法找某个文件夹中是否有以**.txt结尾的文件(**需要考虑子文件夹)

import java.io.File;

/**
 * 定义一个方法找某个文件夹中是否有以.txt结尾的文件(需要考虑子文件夹)
 */

public class Question3 {
    public static void main(String[] args) {
        File file = new File("F:/");
        findTxt(file);
    }

    public static void findTxt(File file) {
        //获取所有的文件
        final File[] files = file.listFiles();
        //判断是否非空
        if (files != null) {
            //遍历file
            for (File f : files) {
                //如果是文件就进行名称的判断并输出
                if (f.isFile()) {
                    //判断是否为txt结尾
                    if (f.getName().endsWith(".txt")) {
                        System.out.println(f.getName());
                    }
                } else {                 //否则调用递归
                    findTxt(f);
                }
            }
        }
    }

}

4.4、删除一个多级文件夹

思路:同样使用递归,先遍历文件夹,如果是文件,就直接删除,如果是文件夹,就进入递归,最后删除根文件夹。