一,概述

java.io.File类是文件和目录路径名的抽象表示形式,java把电脑中的文件/文件夹封装为一个File类。我们可以使用File类对文件和文件夹进行操作:创建、删除、获取、判断是否存在、对文件夹进行遍历及获取文件大小。
注意:File类是一个与系统无关的类,任何操作系统都可以使用这个类中的方法。

二,静态成员变量

static String pathSeparator: 路径分隔符,字符串形式。
static Char pathSeparatortoChar: 路径分隔符的字符形式。
static String Separator: 文件名称分隔符的字符串表示形式。
static Char SeparatortoChar: 文件名称分隔符的字符串表示形式。

import java.io.File;

public class DemoFileStaticValue {
    public static void main(String[] args) {
        String sep = File.separator;
        System.out.println("文件夹分隔符(字符串形式):"+sep); //文件夹分隔符(字符串形式):\ (linux系统是 /)
        char sepChar = File.separatorChar;
        System.out.println("文件夹分隔符(字符形式):"+sepChar);//文件夹分隔符(字符形式):\

        String pathsep = File.pathSeparator;
        System.out.println("路径分隔符(字符串形式):"+pathsep);//路径分隔符(字符串形式):; (linux系统是 :)
        char pathsepchar = File.pathSeparatorChar;
        System.out.println("路径分隔符(字符形式):"+pathsepchar);//路径分隔符(字符形式):;
    }
}

路径注意事项:
1,路径不区分大小写;
2,路径中的文件名称分隔符,window使用反斜杠,反斜杠是转义字符,两个反斜杠代表一个普通的反斜杠。

二,File类中获取功能的方法

1,String getAbsolutePath(): 返回此File的绝对路径字符串表示形式。
2,String getPath(): 将File对象转换为路径字符串,返回构造方法中的路径,File对象中的toString中调用此方法。
3,String getName(): 返回此File表示的文件或目录名称。
4,String length():返回此File表示的文件大小,以字节为单位。若构造方法中路径不存在,返回0.

import java.io.File;

public class DemoFileGet {
    public static void main(String[] args) {
        show1();
        show2();
        show3();
        show4();

    }

    private static void show4() {
        File f1 = new File("E:\\python代码\\数据结构\\单链表.py");
        long l1 = f1.length();
        System.out.println(l1);//2419
        File f2 = new File("E:\\python代码\\数据结构\\1.txt");
        long l2 = f2.length();
        System.out.println(l2);//0
    }

    private static void show3() {
        //E:\python代码\数据结构
        File f1 = new File("E:\\python代码\\数据结构\\单链表.py");
        String name = f1.getName();
        System.out.println(name);//单链表.py
        File f2 = new File("E:\\python代码\\数据结构");
        String name2 = f2.getName();
        System.out.println(name2);//数据结构

    }

    private static void show2() {
        File f1 = new File("E:\\java视频\\02Java语言进阶\\day08_File类、递归\\video");
        File f2 = new File("video");
        System.out.println(f1.getPath());//E:\java视频\02Java语言进阶\day08_File类、递归\video
        System.out.println(f2.getPath());//video
        System.out.println(f2.toString());//video
    }

    private static void show1() {
        File f1 = new File("E:\\java视频\\02Java语言进阶\\day08_File类、递归\\video");
        File f2 = new File("video");
        String absolutepath = f1.getAbsolutePath();
        System.out.println(absolutepath);//E:\java视频\02Java语言进阶\day08_File类、递归\video
        System.out.println(f2.getAbsolutePath());//D:\IdealProjects\demo\video
    }
}

三,判断功能的方法

1,boolean exists():文件或文件夹存在,则返回true。
2,boolean isDirectory():判断此File表示的是否为文件夹。
3,boolean isFile(): 判断此File表示的是否为文件。
注意:isDirectory()和isFile()方法适用前提,路径必须是存在的,否则返回false。

import java.io.File;

public class DemoFileJudge {
    public static void main(String[] args) {
        File file = new File("C:\\AppData\\Roaming\\miniconfig\\history.ini");
        if(file.exists()){
            System.out.println(file.isDirectory()); //false
            System.out.println(file.isFile()); //true
        }
        File file2 = new File("C:\\AppData\\Roaming\\miniconfig\\history2.ini");
        System.out.println(file2.isDirectory()); //false
        System.out.println(file2.isFile()); //false

    }
}

四,创建删除功能的方法

1,boolean createNewFile(): 当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。创建的文件路径和名称在构造方法中给出。
返回值:
true: 文件不存在,创建文件成功,返回true。
false:文件存在,不会创建。

注意
1,此方法只能创建文件,不能创建文件夹。
2,创建文件的路径必须存在,否则抛出异常。

2,boolean mkdir():创建单级空文件夹。
boolean mkdirs():可创建单级空文件夹、也可创建多级文件夹。
返回值:
true:文件夹不存在,创建文件夹,返回true。
false:文件夹存在,不会再创建,返回false;构造方法中给出的路径不存在,返回false。

注意:此方法只能创建文件夹,不能创建文件。

3,boolean delete(): 删除由此File表示的文件或者目录。
返回值:
true:文件/文件夹删除成功,返回true。
false: 文件夹有内容文件,不会删除,返回false;构造方法中路径不存在,返回false。

注意:delete()方法直接在硬盘删除文件/文件夹,不走回收站,删除需谨慎。

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

public class DemoCreateFile {
    public static void main(String[] args) throws IOException {
//        show01();
//        show02();
//        show03();
        show04();
    }

    private static void show04() {
        File file2 = new File("D:\\IdealProjects\\demo\\src\\day5_11\\文件夹");
        boolean b2 = file2.delete();
        System.out.println(b2); //true

        File file1 = new File("D:\\IdealProjects\\demo\\src\\day5_11\\1.txt");
        boolean b1 = file1.delete();
        System.out.println(b1);//false.文件夹中有文件,不为空

        File file3 = new File("D:\\IdealProjects\\demo\\src\\day5_\\1.txt");
        boolean b3 = file3.delete();
        System.out.println(b3);//false.构造方法中文件夹不存在
    }

    private static void show03() {
        File file1 = new File("D:\\IdealProjects\\demo\\src\\day5_11\\aaa\\bbb\\ccc");
        boolean b1 = file1.mkdirs();
        boolean b2 = file1.mkdirs();
        System.out.println(b1);//true
        System.out.println(b2);//false
    }

    private static void show02() {
        File file1 = new File("D:\\IdealProjects\\demo\\src\\day5_11\\day5_11_test");
        boolean b1 = file1.mkdir();
        boolean b2 = file1.mkdir();
        File file2 = new File("D:\\IdealProjects\\demo\\src\\day5_\\day5_11_test");
        boolean b3 = file2.mkdir();
        System.out.println();
        System.out.println(b1);//true
        System.out.println(b2);//false.文件夹已经存在
        System.out.println(b3);//false.构造方法中文件夹不存在
    }

    private static void show01() throws IOException {
        File file = new File("D:\\IdealProjects\\demo\\src\\day5_11\\1.txt");
        boolean b1 = file.createNewFile();
        boolean b3 = file.createNewFile();
        System.out.println(b1);//true
        System.out.println(b3);//false

        File file3 = new File("D:\\IdealProjects\\demo\\src\\day5_11\\文件夹");
        file3.createNewFile();//还是文件

        File file2 = new File("D:\\IdealProjects\\demo\\src\\day5_\\1.txt");
        boolean b2 = file2.createNewFile();
        System.out.println(b2); //路径名不存在,抛出异常。java.io.IOException

    }
}

五,遍历文件夹的方法

1,String[] list():返回一个String数组,表示该File目录的所有文件和目录,获取所有文件和文件夹的名称。
2,File[] listFiles():返回一个File数组,表示该File目录的所有文件和目录,把文件/文件夹封装为一个File对象。
注意:list()方法和listFiles()方法遍历的是构造方法中给出的目录,若目录不存在,或者路径不是一个目录,会抛出空指针异常

import java.io.File;

public class DemoFileSearch {
    public static void main(String[] args) {
//        show01();
//        show02();
    }

    private static void show02() {
        File file = new File("D:\\IdealProjects\\demo\\src\\day5_11");
        File[] files = file.listFiles();

        for (File file_inner : files) {
            System.out.println(file_inner+":"+file_inner.length());
        }
        /*
        D:\IdealProjects\demo\src\day5_11\aaa:0
        D:\IdealProjects\demo\src\day5_11\day5_11_test:0
        D:\IdealProjects\demo\src\day5_11\DemoCreateFile.java:2336
        D:\IdealProjects\demo\src\day5_11\DemoFileCreate.java:1161
        D:\IdealProjects\demo\src\day5_11\DemoFileGet.java:1744
        D:\IdealProjects\demo\src\day5_11\DemoFileJudge.java:560
        D:\IdealProjects\demo\src\day5_11\DemoFileSearch.java:1173
        D:\IdealProjects\demo\src\day5_11\DemoFileStaticValue.java:849
         */
    }

    private static void show01() {
//        File file = new File("D:\\IdealProjects\\demo\\src\\day5_");//NullPointerException
//        File file = new File("D:\\IdealProjects\\demo\\src\\day5_11\\DemoFileGet.java");//NullPointerException
        File file = new File("D:\\IdealProjects\\demo\\src\\day5_11");
        String[] arr = file.list();

        for (String filename : arr) {
            System.out.println(filename);
        }
        /*
            aaa
            day5_11_test
            DemoCreateFile.java
            DemoFileCreate.java
            DemoFileGet.java
            DemoFileJudge.java
            DemoFileSearch.java
            DemoFileStaticValue.java
         */
    }
}