File类详解 -- java基础

目录

前言

一、File类概述

二、构造方法        

三、绝对路径和相对路径

四、 常用方法 

1.File类创建功能

2.File类删除功能

3.File类判断功能

4.File类获取功能

总结


前言

本文从以下三个个方面阐述 :①java.io.Flie类可以帮助我们完成哪些工作,②它的构造方法,③常用的方法有哪些。


一、File类概述

1. 它是文件和目录路径名的抽象表示,也就是说文件和目录是可以通过File类封装成对象的

2.但是对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已.它可以是存

在的,也可以是不存在的.将来是要通过具体的操作把这个路径的内容转换为具体存在的


二、构造方法        

方法名说明
File(String pathname)通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
File(String parent, String child)

从父路径名字符串和子路径名字符串创建新的 File实例

File(File parent, String child)从父抽象路径名和子路径名字符串创建新的 File实例

1. File(String pathname) 

//使用单参的构造器
private static void method1() {
        //路径名为文件
        String path ="E:\\UsageTimes.txt";
        //路径名为目录
        String path ="E:\\homework";
        File file = new File(path);
        System.out.println(file);
    }

注意:这里传入的路径名 可以是可以是文件,也可以是目录

2. File(String parent, String child)

//从父路径名字符串和子路径名字符串创建新的 File实例
private static void method2() {
        String path1 = "E:\\";
        String path2 = "UsageTimes.txt";
        File file = new File(path1,path2);
        System.out.println(file);
    }

如果父路径为空则按照子路径名创建新的File实例,如果不为空则以父路径名表示目录,子路径名表示目录或者文件(可以理解为将父路径和子路径拼接为一个路径,以此来创建File实例)

3. File(File parent, String child)

//从父抽象路径名和子路径名字符串创建新的 File实例
private static void method3() {
        File file1 = new File("E:\\");
        String file2 = "UsageTimes.txt";
        File file = new File(file1,file2);
        System.out.println(file);
    }


三、绝对路径和相对路径

  • 绝对路径:是一个完整的路径,从盘符开始

  • 相对路径:是一个简化的路径,相对当前项目下的路径

  • 代码如下(示例):在这里我使用相对路径创建一个a.txt,代码执行后的结果是在当前项目的根目录下创建a.txt


四、 常用方法 

1.File类创建功能

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

File类可以创建:文件和目录

1. 文件【createNewFile】

代码如下(示例):当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新的空文件

//当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件
private static void method1() throws IOException {
        File file = new File("E\\UsageTimes.txt");
        //不管调用者有没有后缀名都会创建相应的文件
        boolean result = file.createNewFile();
        System.out.println(result);
    }

如果文件存在时,返回值将为false

2. 目录(这里创建也可以用第三种方法实现,所以基本不用)【mkdir】

使用方法和mkdirs相同,此处不再举例

3. 层级目录【mkdirs】

代码如下(示例):使用mkdirs方法既可以创建多级目录也可以创建单个目录

 //使用mkdirs方法既可以创建多级目录也可以创建单个目录
    private static void method2() {
        File file = new File("E:\\aaa\\bbb\\ccc");
        boolean mkdirs = file.mkdirs();
        System.out.println(mkdirs);
    }

2.File类删除功能

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

代码如下(示例):注意此处删除文件不走回收站,直接删除掉了。

private static void method1() {
        //删除文件不走回收站
        File file = new File("E\\UsageTimes.txt");
        file.delete();
    }

3.File类判断功能

方法名说明
public boolean isDirectory()测试此抽象路径名表示的File是否为目录
public boolean isFile()测试此抽象路径名表示的File是否为文件
public boolean exists()测试此抽象路径名表示的File是否存在

4.File类获取功能

方法名说明
public String getAbsolutePath()返回此抽象路径名的绝对路径名字符串
public String getPath()将此抽象路径名转换为路径名字符串
public String getName()返回由此抽象路径名表示的文件或目录的名称
public File[] listFiles()返回此抽象路径名表示的目录中的文件和目录的File对象数组

这里要注意最后一个public File[] listFiles()方法。

以删除一个多级文件夹为例

分析:如果要删除一个文件夹必须要删掉里面的所有内容,这里要删除一个多级文件夹,只知道根目录,里面的内容不知道。

这里我们的思想是 先进入第一级目录,使用public File[] listFiles()方法获取到这一层的所有文件和目录,如果是文件直接删除,如果是目录则再进入...重复这样的操作直到没有获取不到文件和目录。最后再把根目录删除。

这里使用了递归的思想。

代码如下(示例):

public class Test2 {
    //delete方法
    //删除一个有文件的文件夹
    //先删掉这个文件里的所有文件夹
    //F:\src
    public static void main(String[] args) {
        File src = new File("F:\\src");
        deleteDir(src);
    }
    private static void deleteDir(File src) {
        //递归,方法在方法体中自己调用自己
        //套路
        //1. 进入 -- 得到src文件夹里面说有内容的File对象
        File[] files = src.listFiles();
        //2. 遍历 -- 因为我想得到src文件夹下面的的每一个文件和文件夹的File对象
        for (File file : files) {
            if (file.isFile()){
                //3. 判断 -- 如果遍历到的file对象是一个文件,那么直接删除。
                file.delete();
            }else{
                //4. 递归
                deleteDir(file);
            }
        }
        //最后再删除这个文件夹
        src.delete();
    }
}


总结

这里总结了File类的基本用法

如果有不足之处欢迎指正批评!如果有疑问欢迎留言,绝对第一时间回复!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值