JAVA进阶篇之详细了解File文件的常用API

 更新时间:2023年11月27日 09:27:21   作者:小扳  
这篇文章主要给大家介绍了关于JAVA进阶篇之详细了解File文件的常用API的相关资料,File用于表示文件系统中的一个文件或目录,文中通过代码介绍的非常详细,需要的朋友可以参考下

 1.0 File 文件的说明

在 Java 中,File 类是用于操作文件和文件夹的类。它提供了一系列的方法,可以用于创建、删除、重命名、查询文件和目录的信息等操作。

2.0 如何创建 File 类的对象

一般都是通过文件路径创建 File 对象,注意的是该对象即可以是文件也可以是文件夹。

常用的三种方式:

(1)使用文件路径创建 File 对象、(2)使用目录路径和文件名创建 File 对象、(3)使用父目录的 File 对象和文件名创建 File 对象

代码如下:

public class NewFile {
    public static void main(String[] args) {
        //1. 创建文件对象
        File f1 = new File("D:\\software\\aaa\\bbb.txt");
        //这样就可以得到了该路径的文件对象了。

        //2. 创建文件夹对象
        File f2 = new File("D:\\software\\aaa");
        //像这样就可以得到了该路径的文件夹对象了。

        //3. 第二种创建文件对象的方式
        //   使用父目录的 File 对象和文件名创建 File 对象
        File f3 = new File(f2,"bbb.txt");

        //4. 第四种创建文件对象的方式
        //   使用目录路径和文件名创建 File 对象
        File f4 = new File("D:\\software\\aaa","bbb.txt");
    }
}

这些方式都是大致是相同的,表达都是同一个意思。

2.1 需要注意的事项

第一个点:File 类对象既可以是文件也可以是文件夹。

第二个点:无论该路径上的文件或者文件夹是否存在,都不会报错,文件或者文件夹存不存在都是可以的创建 File 类对象的。

第三个点:编写路径的时候,需要注意的是如果用到了反斜杠,为了防止字符转义,所以需要再加多一条反斜杠进行转义为单个反斜杠。如果用到了正斜杆,就可以单写一条就够了。还可以用 File 类中的方法来进行编写路径。

代码如下:

import java.io.File;

public class NewFile {
    public static void main(String[] args) {
        File f1 = new File("D:\\software\\aaa\\bbb.txt");
        File f2 = new File("D:/software/aaa/bbb.txt");
        File f3 = new File("D:"+File.separator+"software"+File.separator+"aaa"+File.separator+"bbb.txt");
        System.out.println(f3.getAbsoluteFile());
    }
}

运行结果如下:

这三种效果都是相同的,都可以得到该类的对象。

3.0 File 类的常用 API

先来介绍创建、删除、重命名、查询文件和目录的信息的相关 API。

3.1 如何创建文件或文件夹

createNewFile():创建一个新的空文件。

代码如下:

import java.io.IOException;

public class NewFile {
    public static void main(String[] args) throws IOException {

        //先要定义 File 类对象
        File f1 = new File("D:\\software\\aaa\\ccc.txt");
        //创建文件
        f1.createNewFile();
    }
}

如果文件不存在的话,就会创建一个空文件。需要注意的是,这里会有编译异常,需要抛异常或者捕获异常。

mkdir():创建一个新的目录。

代码如下:

import java.io.File;

public class NewFile {

    public static void main(String[] args) {
        File f1 = new File("D:\\software\\aaa\\ddd");
        f1.mkdir();
    }
}

如果文件不存在的话,就会创建一个空文件。需要注意的是,只能创建一级文件夹。

mkdirs():创建一个多级目录。

代码如下:

import java.io.File;

public class NewFile {

    public static void main(String[] args) {
        File f1 = new File("D:\\software\\aaa\\ddd\\fff\\ggg\\hhh");
        f1.mkdir();
    }
}

这些方法若创建成功都会返回 boolean 类型。

3.2 如何查询文件和文件夹的信息

这些查询信息的 API 会比较多,但是很容易上手,直接代码演示了。

代码如下:

import java.text.SimpleDateFormat;
import java.io.File;

public class NewFile {
    public static void main(String[] args) {
        File f1 = new File("D:\\software\\aaa\\bbb.txt");

        //1.0 判断当前文件对象,对应的文件路径是否存在,存在返回true,反之。
        System.out.println(f1.exists());
        //输出结果为:true

        //2.0 判断当前文件对象指代的是否是文件,是文件返回true,反之。
        System.out.println(f1.isFile());
        //输出结果为:true

        //3.0 判断当前文件对象指代的是否是文件夹,是文件返回true,反之。
        System.out.println(f1.isDirectory());
        //输出结果为:false

        //4.0 获取文件的名称(包含后缀)
        String name = f1.getName();
        System.out.println(name);
        //输出结果为:bbb.txt

        //5.0 获取文件的大小,返回字节个数,返回类型为 long 类型。
        long len = f1.length();
        System.out.println(len);
        //输出结果为:0

        //6.0 获取文件的最后修改的时间,返回类型为 long 类型。
        long lastTime = f1.lastModified();
        System.out.println(lastTime);
        //输出结果为:1698570082109
        //这里可以格式化
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String time = simpleDateFormat.format(lastTime);
        System.out.println(time);
        //输出结果为:2023-10-29 17:01:22

        //7.0 获取创建文件对象时,使用的路径。
        String path = f1.getPath();
        System.out.println(path);
        //输出结果为:D:\software\aaa\bbb.txt

        //8.0 获取创建文件对象时,使用的绝对路径。
        String absolutePath = f1.getAbsolutePath();
        System.out.println(absolutePath);
        //输出结果为:D:\software\aaa\bbb.txt

    }
}

运行结果如下:

3.3 如何删除文件和文件夹

delete():删除文件或文件夹。

代码如下:

import java.io.File;

public class NewFile {
    public static void main(String[] args) {
        File f1 = new File("D:\\software\\aaa\\bbb.txt");
        System.out.println(f1.delete());
    }
}

删除成功会返回ture,反之。需要注意的是,只能删除空文件或者文件夹。

3.4 如何重命名文件和文件夹       

renameTo(File dest):重命名文件或文件夹。

代码如下:

import java.io.File;

public class NewFile {
    public static void main(String[] args) {
        File f1 = new File("D:\\software\\aaa\\ccc.txt");
        File f2 = new File("D:\\software\\aaa\\sss.txt");
        System.out.println(f1.renameTo(f2));
    }
}

如果可以改名成功,会返回true,反之。

3.5 如何遍历文件和文件夹名称    

list():返回目录下的所有文件和目录的名称数组。

代码如下:

import java.io.File;
import java.util.Arrays;

public class NewFile {
    public static void main(String[] args) {
        File f = new File("D:\\software\\code\\2023_java\\2023_java_code");
        String[] strings = f.list();
        System.out.println(Arrays.toString(strings));
    }
}

返回的是字符串类型的文件名,而不是文件或者文件夹对象。

3.6 如何遍历文件和文件夹对象    

listFiles():返回目录下的所有文件和目录的File对象数组。

代码如下:

import java.io.File;
import java.util.Arrays;

public class NewFile {
    public static void main(String[] args) {
        File file = new File("D:\\software\\code\\2023_java\\2023_java_code");
        File[] files =  file.listFiles();
        System.out.println(Arrays.toString(files));
    }
}

运行结果如下:

得到的是文件或者是文件夹的对象。

4.0 File 文件搜索

接下来做个小项目,File 文件搜索,给出盘符还有目标文件,来通过遍历来找到该目标文件的路径,并且启动起来。

代码如下:

import java.io.File;

public class NewFile {
    public static void main(String[] args) throws Exception {
        fileSearch(new File("D:\\"),"WeChat.exe");
    }
    public static void fileSearch(File file,String name) throws Exception {
        if (file == null || !file.exists() || file.isFile()){
            return;
        }
            File[] files = file.listFiles();
        if (files != null) {
            for (File f : files) {
                if (f.isFile()) {
                    if (f.getName().contains(name)) {
                        System.out.println("找到了:" + f.getAbsoluteFile());
                        Runtime runtime = Runtime.getRuntime();
                        runtime.exec(f.getAbsolutePath());
                    }
                } else {
                    fileSearch(f, name);
                }
            }
        }
    }
}

总结 

到此这篇关于JAVA进阶篇之File文件的常用API的文章就介绍到这了,更多相关JAVA File文件的常用API内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Intellij IDEA查看Java源码技巧

    使用Intellij IDEA查看Java源码技巧

    这篇文章主要介绍了使用Intellij IDEA查看Java源码技巧,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • RocketMQ消息丢失的场景以及解决方案

    RocketMQ消息丢失的场景以及解决方案

    Apache RocketMQ是企业级的消息中间件,以其高性能和高可靠性而广泛应用,但是,消息丢失的问题在实践中仍然存在,本文将探讨此问题并提供解决方案,需要的朋友可以参考下
    2023-11-11
  • Java ArrayList的基本概念和作用及动态数组的机制与性能

    Java ArrayList的基本概念和作用及动态数组的机制与性能

    在Java中,ArrayList是一个实现了List接口的动态数组,它可以根据需要自动增加大小,因此可以存储任意数量的元素,这篇文章主要介绍了探秘Java ArrayList的基本概念和作用及动态数组的机制与性能,需要的朋友可以参考下
    2023-12-12
  • springBoot项目打包idea的多种方法

    springBoot项目打包idea的多种方法

    这篇文章主要介绍了springBoot项目打包idea的多种方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 详解Springboot+React项目跨域访问问题

    详解Springboot+React项目跨域访问问题

    这篇文章主要介绍了详解Springboot+React项目跨域访问问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • Java源码解析之Gateway请求转发

    Java源码解析之Gateway请求转发

    今天给大家带来的是关于Java的相关知识,文章围绕着Gateway请求转发展开,文中有非常详细介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • JAVA匿名内部类(Anonymous Classes)的具体使用

    JAVA匿名内部类(Anonymous Classes)的具体使用

    本文主要介绍了JAVA匿名内部类,匿名内部类在我们JAVA程序员的日常工作中经常要用到,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • springboot整合redis进行数据操作(推荐)

    springboot整合redis进行数据操作(推荐)

    springboot整合redis比较简单,并且使用redistemplate可以让我们更加方便的对数据进行操作。下面通过本文给大家分享springboot整合redis进行数据操作的相关知识,感兴趣的朋友一起看看吧
    2017-10-10
  • JNDI在JavaEE中的角色_动力节点Java学院整理

    JNDI在JavaEE中的角色_动力节点Java学院整理

    这篇文章主要介绍了JNDI在JavaEE中的角色,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • 深入解析System.load 与 System.loadLibrary

    深入解析System.load 与 System.loadLibrary

    以下是对System.load与System.loadLibrary进行了详细的分析介绍。需要的朋友可以过来参考下
    2013-08-08

最新评论