• Java之IO流详解(一)——File类


    一、File类创建文件

    方法说明
    public boolean createNewFile()当具有该名称的文件不存在时,创建一个由该抽象路径命名的新空文件
    public boolean mkdir()创建由此抽象路径命名的目录
    public boolean mkdirs()创建由此抽象路径命名的目录,包括任何必须但不存在的父目录

    eg:

    public static void main(String[] args) throws IOException {
        //当具有该名称的文件不存在时,创建一个由该抽象路径命名的新空文件(创建文件)
        //如果父目录不存在,则会创建不成功
        File file1 = new File("C:\\Users\\Administrator\\Desktop\\test\\test01\\test01.java");
        System.out.println(file1.createNewFile());
        //创建由此抽象路径命名的目录(创建文件夹)
        //如果父目录不存在,则会创建不成功
        File file2 = new File("C:\\Users\\Administrator\\Desktop\\test\\test02");
        System.out.println(file2.mkdir());
        //创建由此抽象路径命名的目录,包括任何必须但不存在的父目录(创建目录,没有指定的父目录也会一起创建)
        File file3 = new File("C:\\Users\\Administrator\\Desktop\\test\\test03\\qize");
        System.out.println(file3.mkdirs());
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    二、File类常用判断方法

    方法说明
    boolean isDirectory()判断是否是文件夹
    boolean isFile()判断是否是文件
    boolean exists()判断文件是否存在

    eg:

    public static void main(String[] args) {
        File file = new File("C:\\Users\\Administrator\\Desktop\\test\\test01\\test01.java");
        if(file.isDirectory()){
            System.out.println("是文件夹");
        }else{
            System.out.println("不是文件夹");
        }
        if(file.isFile()){
            System.out.println("是文件");
        }else{
            System.out.println("不是文件");
        }
        if(file.exists()){
            System.out.println("文件是存在的");
        }else{
            System.out.println("文件不存在");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    三、File类常用获取方法

    1. File类常用获取方法
    方法说明
    String getAbsolutePath()获取绝对路径
    String getPath()获取抽象路径名转化路径名字符串
    String getName()获取文件或文件夹的名称
    String[] list()获取目录下所有内容,返回字符串数组
    File[] getlistFiles()获取目录下的所有内容,返回File对象数组

    eg:

    public static void main(String[] args) {
        File file = new File("C:\\Users\\Administrator\\Desktop\\test\\test01\\test01.java");
        //获取绝对路径
        System.out.println(file.getAbsolutePath());
        //获取相对路径
        System.out.println(file.getPath());
        //获取文件或文件夹的名称
        System.out.println(file.getName());
        File file2 = new File("C:\\Users\\Administrator\\Desktop\\test\\test01");
        //获取目录下所有内容,返回字符串数组
        String[] list = file2.list();
        for(String s:list){
            System.out.println(s);
        }
        //获取目录下的所有内容,返回File对象数组
        File[] files = file2.listFiles();
        for(File f:files){
            System.out.println(f);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    1. 绝对路径与相对路径
      (1)绝对路径是指文件在硬盘上真正存在的路径。
      (2)相对路径是java工程中要访问的文件相对于当前文件的位置。
      eg:
    public static void main(String[] args) throws IOException {
        File file = new File("Test05.java");
        System.out.println(file.createNewFile());
        System.out.println(file.getAbsolutePath());
        System.out.println(file.getPath());
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    四、File类删除操作

    方法说明
    boolean delete()如果删除路径是一个文件则可以直接删除。如果删除路径是一个目录,不能够直接删除目录。需要先删除该目录下的所有内容,最后才能删除目录。

    eg:

    public static void main(String[] args) {
        File file1 = new File("C:\\Users\\Administrator\\Desktop\\test\\test01");
        //文件夹无法直接删除,因为该文件夹里还有文件,需要先删除该目录下的全部内容,然后才能删除该目录
        System.out.println(file1.delete());
        File file2 = new File("C:\\Users\\Administrator\\Desktop\\test\\test01\\test03.java");
        //文件test03.java可以直接删除
        System.out.println(file2.delete());
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    五、遍历目录

    采用递归算法遍历目录
    eg:

    public class Test06 {
        public static void main(String[] args) {
            File file = new File("C:\\Users\\Administrator\\Desktop\\test");
            getAllFile(file);
        }
    
        /**
         * 使用递归算法遍历目录
         * @param file
         * @return
         */
        public static void getAllFile(File file){
            //1、根据listFiles()方法获取到目录下的file集合
            File[] files = file.listFiles();
            //2、files数组如果为null,则结束
            if(files == null){
                return;
            }
            //3、遍历该目录中所有内容
            for(File f:files){
                System.out.println(f.getAbsolutePath());
                //4、如果为目录,则采用递归算法调用本身
                if(f.isDirectory()){
                    getAllFile(f);
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    六、删除目录

    采用递归算法删除目录

    eg:

    public class Test07 {
        public static void main(String[] args) {
            File file = new File("C:\\Users\\Administrator\\Desktop\\test\\test03\\qize");
            deleteFile(file);
        }
    
        /**
         * 使用递归算法遍历目录
         * @param file
         * @return
         */
        public static void deleteFile(File file){
            //1、根据listFiles()方法获取到目录下的file集合
            File[] files = file.listFiles();
            //2、files数组如果为null,则结束
            if(files == null){
                return;
            }
            //3、遍历该目录中所有内容
            for(File f:files){
                //4、如果为目录,则采用递归算法调用本身
                if(f.isDirectory()){
                    deleteFile(f);
                }else {
                    System.out.println(f.getAbsolutePath());
                    //是文件则直接删除
                    f.delete();
                }
            }
            //遍历结束后则代表文件已经全部删除了,这时可以直接删除文件夹了
            file.delete();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
  • 相关阅读:
    如何修复“AI的原罪”
    从0开始学习JavaScript--JavaScript 类和模块详解
    zabbix监控多实例redis
    深度学习快速入门----Pytorch 系列2
    双十一攒幸运值领红包,2022年天猫双11预售活动解读
    java 工程管理系统源码+项目说明+功能描述+前后端分离 + 二次开发
    用于胰腺癌自动化综述报告和可切除性分类的大型语言模型| 文献速递-基于深度学习的乳房、前列腺疾病诊断系统
    Java#14(StringJoiner)
    .NET CORE医学检验信息系统源码,B/S架构 saas模式
    OAuth2.0客户端基于oltu搭建
  • 原文地址:https://blog.csdn.net/qq_36216193/article/details/128056255