IO-File

File

File:他是文件和目录路径名的抽象表示

  • 文件和目录是可以通过File封装成对象的
  • 对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已,它可以是存在的,也可以是不存在的。将来是要通过具体的操作把这个路径的内容转换为具体存在的

构造方法:

方法名说明
File(String pathname)通过将给定的路径名子字符串转换为抽象路径名来创建新的File实例
File(String parent,String child)从父路径名 字符串和子路径名 字符串创建新的File实例
File(File parent,String child)从父路径名和子路径名 字符串创建新的File实例
public class Test {
    public static void main(String[] args) {
        File f1 = new File("G:\\JAVA学习\\IO\\java.txt");
        System.out.println(f1);
        File f2 = new File("G:\\JAVA学习\\IO","java.txt");
        System.out.println(f2);
        File f3 = new File("G:\\JAVA学习\\IO");
        File f4 = new File(f3,"java.txt");
        System.out.println(f4);
        //以上内容全部输出为G:\JAVA学习\IO\java.txt
    }
}

File类创建功能

方法名说明
boolean createNewFile()当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件
boolean mkdir()创建由此抽象路径名名命的目录
boolean mkdirs()创建由此抽象路径名名命的目录,包括任何必须但不存在的父目录
public class Test {
    public static void main(String[] args) throws IOException {
        File f1 = new File("G:\\JAVA学习\\java.txt");
        //如果文件不存在,就创建文件并返回true,如果文件存在就返回false
        System.out.println(f1.createNewFile());
        //如果目录不存在,就创建目录并返回true,如果目录存在就返回false
        File f2 = new File("G:\\JAVA学习\\Hellow world");
        System.out.println(f2.mkdir());
        //多级目录需要用mkdirs 不可以用mkdir
        File f3 = new File("G:\\JAVA学习\\Java Web\\Html");
        //System.out.println(f3.mkdir());
        System.out.println(f3.mkdirs());
    }
}

注:用mkdir()创建java.txt仍能成功,只不过是建立了名为java.txt的目录

在有名为java.txt名字的目录时,创建java.txt名字的文件则会失败,哪怕一个是目录一个是文件也不能同名

创建文件时如果找不到指定上级目录也会存在异常

File类的判断和获取功能

方法名说明
boolean is Directory()测试此抽象路径名表示的File是否为目录
boolean isFile()测试此抽象路径名表示的File是否为文件
Boolean exists()测试此抽象路径名表示的File是否存在
String getAbsolutePath()返回此抽象路径名的绝对路径名 字符串
String getPath()返回此抽象路径名的路径名 字符串
String getName()返回此抽象路径名表示的文件或目录的名称
String[] list()返回此抽象路径名表示的目录中的文件和目录的名称字符串数组
File[] listFiles()返回此抽象路径名表示的目录中的文件和目录的File对象数组

exists英文释义:存在,实际上有

absolute英文释义:绝对的,绝对

File类删除功能

方法名说明
boolean delet()删除由此有抽象路径名表示的文件或目录

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

  • 绝对路径:完整的目录名,不需要任何其他信息就可以定位她所表示的文件
  • 相对路径:必须使用取自其他路径名的信息进行解释,例如模块名\\文件名

注:如果一个目录中有内容(子目录或者文件),不能直接删除。应该先删除目录中的内容,最后才能删除目录

File类递归遍历目录下所有文件

public class Test {
    public static void main(String[] args) {
        File srcFile = new File("src");
        getAllFilePath(srcFile);//调用递归方法
    }
    public static void getAllFilePath(File srcFile){
        File[] files = srcFile.listFiles();//把File类对象转换成File类型的数组
        if (files != null){
            for (File file : files) {//遍历数组
                if (file.isDirectory())
                {
                    getAllFilePath(file);//如果是目录,则递归调用方法
                }else {
                    System.out.println(file.getAbsolutePath());//如果是文件,则获取绝对路径并输出
                }
            }
        }
    }
}