Java基础之File类

146 阅读5分钟

「这是我参与2022首次更文挑战的第25天,活动详情查看:2022首次更文挑战

1.1 File类概述和构造方法

  • 包:java.io.File
  • File:它是文件和目录路径名的抽象表示
    • 文件和目录是可以通过File封装成对象的
    • 对于File而言,其封装的并不是一个真正存在的文件, 仅仅是一个路径名而已。 它可以是存在的,也可以是不存在的。将来是要通过具体的操作把这个路径的内容转换为具体存在的
  • 构造方法
方法名说明
public File(String pathname)通过将给定的路径名字符串转换为抽象路径名来创建新的File实例
public File(String parent,String child)父路径名字符串和子路径名字符串创建新的File实例
public File(File parent,String child)父抽象路径名和子路径名字符串创建新的File实例
import java.io.File;

public class FileDemo {
    public static void main(String[] args) {
        //1,public File(String pathname) 	通过将给定的路径名字符串转换为抽象路径名来创建新的File实例
        File f1 = new File("E:\\test\\java.txt");
        System.out.println(f1); //E:\test\java.txt

        //2,public File(String parent,String child) 	从父路径名字符串和子路径名字符串创建新的File实例
        File f2 = new File("E:\\test","java.txt"); //E:\test\java.txt

        //3,public File(File parent,String child) 	从父抽象路径名和子路径名字符串创建新的File实例
        File f3 = new File("E:\\test");
        File f4 = new File(f3,"java.txt");
        System.out.println(f4); //E:\test\java.txt
    }
}

1.2 File类创建和删除方法

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

    • 绝对路径::完整的路径名,不需要任何其他信息就可以定位它所表示的文件。例如: E:\\test\\java\\java.txt
    • 相对路径: 必须使用取自其他路径名的信息进行解释。例如: test\\java.txt(test表示当前模块)
  • 删除目录时的注意事项:如果一个目录中有内容(目录,文件),不能直接删除。应该先删除目录中的内容,最后才能删除目录

方法名说明
public boolean createNewFile()当具有该名称的文件不存在时,创建一个新的空文件
public boolean mkdir()创建此抽象路径命名的目录(只能创建一级目录)
public boolean mkdirs()创建多级目录(建议使用)
public boolean delete()删除此File表示的文件或目录(只能删除空目录)
import java.io.File;
import java.io.IOException;

public class FileDemo {
    public static void main(String[] args) throws IOException {
        //需求1: 我要在E:\\test目录 下创建一个文件 java.txt
        File f1 = new File("E:\\test\\java.txt");

        //如果文件不存在,就创建,并返回true; 如果文件存在,就不创建,并返回false
        //1,、public boolean createNewFile() 	当具有该名称的文件不存在时,创建一个新的空文件
        System.out.println(f1.createNewFile()); //true

        //需求2:我要在E:\\test目录下创建一个 目录JavaSE
        File f2 = new File("E:\\test\\JavaSE");

        //2、public boolean mkdir() 	创建此抽象路径命名的目录(只能创建一级目录)
        //如果目录不存在,就创建,并返回true; 如果目录存在,就不创建,并返回false
        System.out.println(f2.mkdir()); //true

        //需求3:我要在E:\\test目录 下创建一个多级目录JavaWEB\\HTML
        File f3 = new File("E:\\test\\JavaWEB\\HTML");
        //3、public boolean mkdirs() 	创建多级目录(建议使用)
        //如果目录不存在,就创建,并返回true; 如果目录存在,就不创建,并返回false
        //System.out.println(f3.mkdir()); //false;mkdir():无法创建多级目录
        //4,public boolean mkdirs()	创建多级目录(建议使用)
        System.out.println(f3.mkdirs()); //true

        //需求4:删除java.txt文件
        //5、public boolean delete()	删除此File表示的文件或目录(只能删除空目录)
        System.out.println(f1.delete()); //true

        //需要5:删除JavaSE
        System.out.println(f2.delete()); //true

        //需求6:先创建java文件,里面创建java.txt文件;并删除java目录
        File f4 = new File("E:\\test\\java");
        f4.mkdir();
        File f5 = new File("E:\\test\\java\\java.txt");
        f5.createNewFile();
        System.out.println(f4.delete()); //false;只能删除空目录
    }
}

1.3 File类判断和获取方法

方法名说明
public boolean isDirectory() [dəˈrektəri]判断此抽象路径名表示的File是否为目录
public boolean isFile()判断此抽象路径名表示的File是否为文件
public boolean exists() [ɪɡˈzɪsc]判断此抽象路径名表示的File是否存在
public String getAbsolutePath() [ˈæbsəliːt]返回此抽象路径名的绝对路径名字符串
public String getPath()将此抽象路径名转换为路径名字符串
public String getName()返回由此抽象路径名表示的文件或目录的名称
public String[] list()返回此抽象路径名表示的目录中的文件和目录的名称字符串数组
public File[ listFiles()返回此抽象路径名表示的目录中的文件和目录的File对象数组
import java.io.File;
import java.io.IOException;

public class FileDemo {
    public static void main(String[] args) throws IOException {
        //创建file对象
        File f1  = new File("test\\java.txt");

//        public boolean isDirectory() 	判断此抽象路径名表示的File是否为目录
//        public boolean isFile() 	判断此抽象路径名表示的File是否为文件
//        public boolean exists() 	判断此抽象路径名表示的File是否存在
        System.out.println(f1.isDirectory()); //false
        System.out.println(f1.isFile()); //true
        System.out.println(f1.exists()); //true

//        public String getAbsolutePath() 	返回此抽象路径名的绝对路径名字符串
//        public String getPath() 	将此抽象路径名转换为路径名字符串
//        public String getName() 	返回由此抽象路径名表示的文件或目录的名称
        System.out.println(f1.getAbsoluteFile()); //E:\test\test\test\java.txt
        System.out.println(f1.getPath()); //test\java.txt
        System.out.println(f1.getName()); //java.txt
        System.out.println("-----------");

//        public String[] list() 	返回此抽象路径名表示的目录中的文件和目录的名称字符串数组
        File f2 = new File("E:\\test");
        String[] strArray = f2.list();
        for(String s:strArray) {
            System.out.println(s);
            /*java
            java.txt
            test*/
        }

        //public File[ listFiles() 	返回此抽象路径名表示的目录中的文件和目录的File对象数组
        File[] fileArray = f2.listFiles();
        for(File file:fileArray ) {
            /*System.out.println(file);
//            E:\test\java
//            E:\test\java.txt
//            E:\test\test*/

            if(file.isFile()) { //file对象可以调方法
                System.out.println(file); //E:\test\java.txt
            }
        }
    }
}