美文网首页
Java基础系列34-file类别

Java基础系列34-file类别

作者: 只是甲 | 来源:发表于2021-09-16 10:54 被阅读0次

    一. File类的概述

    File :文件和目录路径名的抽象表示形式
      也就是说文件和目录(文件夹)是可以通过File封装成对象的

    File类的构造方法

    //a. 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
    File(String pathname)
    //b. 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
    File(String parent, String child)
    //c. 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实
    File(File parent, String child)
    

    代码:

    package Java_study;
    
    import java.io.File;
    
    /**
     * 
     * @author  只是甲
     * @date    2021-07-15
     * @remark  File类的构造方法
     *
     */
    
    public class file1 {
        public static void main(String[] args) {
            //以下的f1,f2,f3做的是同样的事情,就是把d:\\b.txt转换为了一个File对象
            
            //a. File(String pathname)
            File f1 = new File("d:\\b.txt");
            
            //b. File(String parent, String child)
            File f2 = new File("d:","b.txt");
            
            //c. File(File parent, String child)
            File f3_path = new File("d:");
            File f3 = new File(f3_path, "b.txt");
        }
    
    }
    

    二. File类的方法

    2.1 创建

    方法摘要

    //a.创建文件 如果文件不存在,创建文件并返回true 如果文件存在,创建文件失败并返回false
    public boolean createNewFile():
        
    //b.创建目录 如果目录不存在,创建目录并返回true 如果目录存在,创建目录失败并返回false
    public boolean mkdir()
    
    //c.创建多级目录
    public boolean mkdirs()
    

    代码:

    package Java_study;
    
    import java.io.File;
    import java.io.IOException;
    
    /**
     * 
     * @author  只是甲
     * @date    2021-07-15
     * @remark  File类方法--创建
     *
     */
    
    
    public class file2 {
        public static void main(String[] args) {
            //需求1:我要在d盘目录下创建一个文件a.txt
            File f1 = new File("D:\\a.txt");
            try {
                System.out.println("1.createNewFile:" + f1.createNewFile());
            } catch (IOException e) {
                System.out.println("IO异常,创建失败");
            }
            
            //需求2:我要在d盘目录下创建一个目录bb
            File f2 = new File("D:" + File.separator + "bb");
            System.out.println("2.mkdir:" + f2.mkdir());
            
            //需求3:我要在d盘目录下创建一个多级目录cc\\dd
            File f3 = new File("D:\\cc" + File.separator + "dd");
            System.out.println("3.mkdirs:" + f3.mkdirs());
            
            //需求4:我要在d盘目录下创建一个文件ee\\f.txt
            File f4_path = new File("D:\\ee");
            File f4_file = new File(f4_path, "f.txt");
            System.out.println("4.mkdir:" + f4_path.mkdirs());
            try {
                System.out.println("4.createNewFile:" + f4_file.createNewFile());
            } catch (IOException e) {
                System.out.println("IO异常,创建失败");
            }
        }
    
    }
    

    测试记录:

    1.createNewFile:true
    2.mkdir:true
    3.mkdirs:true
    4.mkdir:true
    4.createNewFile:true
    

    2.2 删除

    相对路径&绝对路径
     绝对路径:是以盘符开始的路径。d:\aa\b.txt
     相对路径:不以盘符开始。相对于当前的项目而言,在项目的目录下。如何显示出来呢?刷新项目就可以了

    方法摘要

    public boolean delete():删除文件和目录
    

    注意事项
     如果一个目录中有内容(目录,文件),就不能直接删除。
     应该先删除目录中的内容,最后才能删除目录。

    2.2.1 删除文件

    代码:

    package Java_study;
    
    import java.io.File;
    import java.io.IOException;
    
    /**
     * 
     * @author  只是甲
     * @date    2021-07-15
     * @remark  File类方法--删除
     *
     */
    
    public class file3 {
        public static void main(String[] args) throws InterruptedException, IOException{
            //需求1. createNewFile:相对路径创建一个文件a.txt.
            File f1 = new File("a.txt");
            System.out.println("1.创建一个文件a.txt: " + f1.createNewFile());
            
            //需求2. mkdir+createNewFile:相对路径创建一个文件cc\\d.txt
            File f2_path = new File("cc");
            File f2_file = new File("cc" + File.separator + "a.txt");
            System.out.println("3.创建一个目录cc:" + f2_path.mkdirs());
            System.out.println("3.创建一个文件cc\\d.txt: " + f2_file.createNewFile());
            
            //等待10秒
            File projectPath = new File("");//参数为空,表示当前项目根目录
            System.out.println("全部创建完毕,请进入 " + projectPath.getAbsolutePath() + " 目录查看文件,15秒后开始删除");
            Thread.sleep(15000);//线程等待15秒
            
            //需求4.delete:相对路径删除a.txt这个文件
            File f4 = new File("a.txt");
            System.out.println("删除a.txt:" + f4.delete());
            
            //需求5. delete: 相对路径删除cc这个目录(先删除d.txt这个文件,再删除cc这个目录)
            File f5_file = new File("cc" + File.separator + "a.txt");
            File f5_path = new File("cc");
            System.out.println("删除cc\\a.txt文件: " + f5_file.delete() );
            System.out.println("删除cc目录: " + f5_path.delete());
            
        }
    
    }
    

    测试记录:

    1.创建一个文件a.txt: true
    3.创建一个目录cc:true
    3.创建一个文件cc\d.txt: true
    全部创建完毕,请进入 D:\Users\Administrator\eclipse-workspace\Java_study 目录查看文件,15秒后开始删除
    删除a.txt:true
    删除cc\a.txt文件: true
    删除cc目录: true
    

    2.2.2 遍历File目录,删除所有目录下文件

    代码:

    package Java_study;
    
    import java.io.File;
    import java.io.IOException;
    
    /**
     * 
     * @author  只是甲
     * @date    2021-07-15
     * @remark  遍历File目录,删除所有文件
     *
     */
    
    public class file4 {
        public static void main(String[] args) throws InterruptedException, IOException {
            File f_path = new File("D:\\test");
            deleteFile(f_path);
        }
        
        public static void deleteFile(File f) {//传一个File对象f进去 因为要调用其方法
            if (f != null) {//判断f数据是否为空 因为可能有人会传null值进来
                if (f.exists()) {//判断该抽象路径的目录和文件是否存在
                    if (f.isDirectory()) {//判断是否是目录
                        File[] listFiles = f.listFiles();//调用listFiles()方法返回一个File对象组成的数组集合
                        if (listFiles == null) {//如果该数组为Null说明没有文件和目录对象 就是一个空的文件夹
                            f.delete();//直接删除
                        } else {//不为空的文件夹
                            for (File file : listFiles) {//遍历该集合
                                deleteFile(file);//遍历到的每个File对象传入demo()方法
                            }
                            f.delete();//最后将这个不为空的文件夹删除
                        }
                    } else {//不是目录可能是是文件或者不存在
                        f.delete();//直接删除
                    }
                } else {//为Null
                    return;//结束方法调用
                }
            }
        }
    
    }
    

    参考:

    1. https://blog.csdn.net/qq_43529621/article/details/116603510

    相关文章

      网友评论

          本文标题:Java基础系列34-file类别

          本文链接:https://www.haomeiwen.com/subject/gmckultx.html