File-一个IO流中至关重要的类

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){
            // 1、通过给定路径名-字符串转换为抽象路径名来创建新的File实例
            File f1 = new File("D:\\a.txt");
            File f2 = new File("D:\\music");
            // 2、从父路径名字符串和子路径名字符串创建新的File实例
            File f3 = new File("D:\\a","b.txt");
            // 3、从父抽象路径名和子路径名字符串创建新的File实例
            File f4 = new File(f2 , "c.mp4");
        }
    }
    
  • 创建方法

    方法 作用
    public boolean createNewFile() 当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件(文件存在,返回true。不存在返回 false)
    public boolean mkdir() 创建由此抽象路径名命名的目录(文件夹)
    public boolean mkdirs() 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录(创建多级目录)

    注意:

    ①:创建文件的时候,要确保上级目录存在,才可以创建成功

    public class Test{
        public static void main(String[] args) throws IOException {
            // 1、创建一个文件对象,其实就是创建 一个路径的 对象
            File f1 = new File("D:\\a.txt");   				// 文件对象
            File f2 = new File("D:\\b");					// 单级文件夹对象
            File f3 = new File("D:\\c\\d");					// 多级文件夹对象
            // 2、创建文件(就是在磁盘中创建这个路径的文件或者文件夹)
            boolean a = f1.createNewFile();
            boolean b = f2.mkdir();
            boolean c = f3.mkdirs();
            System.out.println(a +" " + b +" " +  c);
        }
    }
    

    File-一个IO流中至关重要的类_第1张图片

  • 删除方法

    方法 作用
    public boolean delete() 删除由此抽象路径名表示的文件或目录

    注意:删除文件的时候,要确保文件夹里没有文件,才可以删除文件夹成功

    public class Test2 {
        public static void main(String[] args) {
            // 1、创建文件对象
            File f1 = new File("D:\\a.txt");   				// 文件对象
            File f2 = new File("D:\\c");					    // 单级文件夹对象
            // 2、删除文件(从磁盘中删除)
            boolean a = f1.delete();
            boolean b = f2.delete();
            System.out.println(a + " " + b);
        }
    }
    

    运行结果:true false ,并且 D盘下 的 a.txt 已经删除(直接从电脑删除,不放入回收站),但是第二个是 false 是因为,我们代码上方的注意事项,c 文件夹下还有 d 文件夹,所以删除失败!

  • 判断和获取方法

    方法 作用
    public boolean isDirectory() 判断此抽象路径名表示的File是否为目录
    public boolean isFile() 判断此抽象路径名表示的File是否为文件
    public boolean exists() 判断此抽象路径名表示的File是否存在
    public String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串
    public String getPath() 将此抽象路径名转换为路径名字符串
    public String getName() 返回此抽象路径名表示的文件或目录的名称
    public String[] list() 返回此抽象路径名表示的目录中的文件和目录的名称字符串数组
    public File[] listFiles() 返回此抽象路径名表示的目录中的文件和目录的File对象数组
    public class Test {
        public static void main(String[] args) {
            // 1、创建一个文件对象,其实就是创建 一个路径的 对象
            File f1 = new File("D:\\a.txt");   				// 文件对象
            File f2 = new File("D:\\b");					    // 单级文件夹对象
            File f3 = new File("D:\\c\\d");                    // 多级文件夹对象
            File f4 = new File("D:\\c");
            // 2、判断此抽象路径名表示的File是否为文件和目录(文件夹)
            boolean a = f1.isFile();
            boolean b = f2.isDirectory();
            // 3、判断此抽象路径名表示的File是否存在
            boolean c = f1.exists();
            // 4、返回此抽象路径名的绝对路径名字符串
            String f3Path = f3.getAbsolutePath();
            // 5、将此抽象路径名转换为路径名字符串
            String path = f3.getPath();
            // 6、返回此抽象路径名表示的文件或目录的名称
            String name = f1.getName();
    
            System.out.println(a + " " + b + " " + c);
            System.out.println(f3Path);
            System.out.println(path);
            System.out.println(name);
    
            // 7、返回此抽象路径名表示的目录中的文件和目录的名称字符串数组
            String[] list = f4.list();
            for (String s : list) {
                System.out.println(s);
            }
            // 8、返回此抽象路径名表示的目录中的文件和目录的File对象数组
            File[] files = f4.listFiles();
            for (File file : files) {
                System.out.println(file);
            }
        }
    }
    

    运行结果

    false true false
    D:\c\d
    D:\c\d
    a.txt
    d
    D:\c\d


绝对路径和相对路径

  • 绝对路径:完整的路径名,不需要任何其他信息就可以定位它所表示的文件
  • 相对路径:必须使用取自其他路径名的信息进行解释(必须要有个参考物)

案例

  • 需求:在D盘下创建一个四级目录,以 a b c d 字母顺序创建,并且在 d 目录下 创建文件 e.mp4 和 f.txt(创建文件时,需要先去判断此文件是否存在)。最后遍历输出 a 文件夹下所有 文件的名字。并且遍历时,删除后缀为 .txt 的文件?

  • 思路分析:

    • 首先需要创建四个 文件对象
    • 创建 两个文件
    • 其次遍历 a 文件夹,并输出所有文件的名字
    • 最后,在遍历的时候,判断后缀是否为 .txt ,是的话,执行删除
    public class Test {
        // 创建文件对象方法
        public static void createFile(File f){
            // 首先判断文件是否存在
            if(!f.exists()){
                // 不存在,创建文件
                try {
                    f.createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        // 遍历文件,并删除后缀是 .txt 的文件
        public static void showAndDel(File f){
            // 判断是文件还是文件夹
            if(f.isDirectory()){
                File[] files = f.listFiles();               // 获取当前文件对象下的所有文件对象
                for (File file : files) {                   // 遍历输出名字,并继续递归向下
                    System.out.println(file.getName());
                    showAndDel(file);
                }
            }else{
                if(f.getName().endsWith(".txt")){           // 判断后缀是否是 .txt 是,执行删除
                    f.delete();
                }
            }
        }
        public static void main(String[] args) {
            // 1、创建 4 个对象
            File f1 = new File("D:\\a\\b\\c\\d");
            File f2 = new File("D:\\a");
            File f3 = new File(f1 , "e.mp4");
            File f4 = new File(f1 , "f.txt");
            // 2、磁盘创建 文件和文件夹
            f1.mkdirs();
            createFile(f3);
            createFile(f4);
            // 3、遍历删除
            showAndDel(f2);
        }
    }
    

你可能感兴趣的:(Java,基础知识专栏,java,IO流,File)