Java基础系列34-file类别

2021-09-16  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读