首页 > 其他分享 >File类操作文件方法详解及其简单应用

File类操作文件方法详解及其简单应用

时间:2024-06-06 23:05:18浏览次数:23  
标签:文件 删除 绝对路径 文件夹 File 目录 详解

一、File 类介绍

  • Java 中的 File 类是 java.io 包的一部分,它提供了操作文件和目录的能力。File 类可以用来表示文件系统中的文件或目录。

二、路径

在讲File用法之前咱们先介绍一下路径是什么?

在计算机中,路径(Path)是指文件或目录在文件系统中的位置。
路径可以分为两种:绝对路径(Absolute Path)和相对路径(Relative Path)。

绝对路径(Absolute Path)

绝对路径是指从文件系统的根目录(Root Directory)开始,到达文件或目录的完整路径。

  • 根目录就是咱们电脑的C盘或者D盘等等盘

    • 例如:我电脑的上这个Java笔记的绝对路径就是:D:\Java笔记
      在这里插入图片描述
  • 绝对路径的优点是:

    • 它是指向文件唯一的位置
    • 它可以在任何目录下使用
    • 用绝对路径肯定能找到该文件

相对路径(Relative Path)

  • 相对路径是指从当前目录开始,到达文件或目录的路径。

  • 例如:HashMap底层原理.md文件相对于Java笔记来说的相对路径就是:\资源\HashMap底层原理.md

在这里插入图片描述

  • 相对路径的优点是:

    • 它可以简化路径的书写

知道了路径的概念,那么接下就步入正题:File的使用

二、File 类的构造方法

File 类有多个构造方法,可以根据不同的需求选择合适的构造方法:

方法名方法描述
File(String pathname)创建一个 File 对象,pathname 是文件或目录的路径
File(String parent, String child)创建一个 File 对象,parent 是父目录,child 是文件或目录的名称
File(File parent, String child)创建一个 File 对象,parent 是父目录的 File 对象,child 是文件或目录的名称
File(URI uri)通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例

主要使用的是前三个,下面来具体演示一下:
在这里插入图片描述

三、File 类的常用方法

File 类提供了许多方法来操作文件和目录,以下是一些常用的方法:

创建文件/文件夹

方法名方法描述
createNewFile()创建文件
mkdir():创建一个单层文件夹
mkdirs():创建一个多层文件夹
  • 具体演示:

在这里插入图片描述

注意:这里的路径是相对路径,是相对于当前Java项目的,使用绝对路径就可以在你想创建的地方创建

获取

方法名方法描述
getPath():获取文件或目录的路径。
getAbsolutePath()获取文件或目录的绝对路径。
getName()获取文件或目录的名称。
getParent()获取文件或目录的父目录。
list():获取路径中的文件和目录。
listFiles()获取中的文件和目录。
  • 具体演示:
    在这里插入图片描述

判断删除

方法名方法描述
exists()判断文件或目录是否存在。
isFile()判断是否是一个文件。
isDirectory()判断是否是一个目录。
delete()删除文件或目录。
renameTo()重命名文件或目录。
canRead()判断文件或目录是否可读。
canWrite()判断文件或目录是否可写。
canExecute()判断文件或目录是否可执行。
  • 具体演示:
    在这里插入图片描述

四、File类方法的应用

删除文件或者整个文件夹

File中的delete()只能删除文件或者空文件夹,那如何删除有文件的文件夹呢?

  • 思路:既然只能delete()只能删除文件或者空文件夹,那么就先把文件夹最里面的文件/空文件夹删除,最里面的删除完了,那外面的文件夹不就成为一个空的文件夹了,那就可以用delete()删除了。
  • 如何进入里面删除呢,我们又不知道这个文件夹有几层?
  • 这个时候你是否想到递归了呢?

下面就是经典使用递归删除文件的方法

  public static void deleteFile(String path){
        File file = new File(path);
        if (file.delete()) {//如果是个文件或空文件夹,直接删除,删除成功返回true,return退出,否则,提取出文件夹中的文件/文件夹列表
            return;
        }
        File[] files = file.listFiles();// 提取出文件夹中的文件/文件夹列表
        for (File file1 : files) {// 遍历文件/文件夹列表
            deleteFile(file1.toString());//再次调用,直至到达文件或空文件夹
        }
        file.delete();//递归出来,删除最外层的文件夹

    }

最后

如果感觉有收获的话,点个赞

标签:文件,删除,绝对路径,文件夹,File,目录,详解
From: https://blog.csdn.net/m0_73940426/article/details/139510805

相关文章

  • SpaceX 首席火箭着陆工程师 MIT论文详解:非凸软着陆最优控制问题的控制边界和指向约束
    上一篇blog翻译了LarsBlackmore(LarsBlackmoreisprincipalrocketlandingengineeratSpaceX)的文章,SpaceX使用CVXGEN生成定制飞行代码,实现超高速机载凸优化。利用地形相对导航实现了数十米量级的导航精度,着陆器在着陆过程中成像行星表面并将特征与机载地图匹配......
  • 2024-05-29_二进制文件和文本文件作业
    1.关于文本文件和二进制文件描述错误的是?()A.文本文件是可以读懂的,二进制文件没办法直接读懂B.数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件C.将内存中的数据转化成ASCII码值的形式,并以ASCII码值的形式存储的文件就是文本文件。D.文本文件和二......
  • 第24讲:预处理详解
    文章目录1.预定义符号2.#define定义常量3.#define定义宏1.预定义符号C语言设置了一些预定义符号,可以直接使用,预定义符号也是在预处理期间处理的。__FILE__//进⾏编译的源⽂件__LINE__//⽂件当前的⾏号__DATE__//⽂件被编译的⽇期__TIME__//⽂件被编译的......
  • 认识NFS文件系统
    NFS简介NFS是NetworkFileSystem的缩写,顾名思义就是网络文件存储系统,它最早是由Sun公司发展出来的,也是FreeBSD支持的文件系统中的一个,它允许网络中的计算机之间通过TCP/IP网络共享资源。通过NFS,我们本地NFS的客户端应用可以透明地读写位于服务端NFS服务器上的文件......
  • IntelliJ IDEA配置创建文件后自动生成注释字段,包括作者、日期和描述等信息。
    效果新建文件自动生成如下文档注释配置如下:打开setting进行如下操作粘贴的模板内容如下:/***@authordeveloper_ZhangXinHua*@date${YEAR}/${MONTH}/${DAY}*@desc${DESCRIPTION}*/......
  • c++文件读写基础操作
    目录一、文件基础理论二、文本文件1.写文件2.读文件三、二进制文件1.写文件 2.读文件一、文件基础理论        程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放,我们通过文件可以将数据持久化。C++中对文件操作需要包含头文件<fstream>......
  • 前端 JS 经典:阿里云文件上传思路
    前言:功能点概括:1、多选文件2、选择文件夹3、拖拽4、选择后形成一个列表,列表里有一些信息5、有进度条6、控制并发数7、可取消8、展示统计信息1.交互实现交互的目标是要拿到file对象。只要拿到file对象,就能通过网络上传。1.1如何选择多文件给input添加multip......
  • 基于FPGA的图像直方图均衡化处理verilog实现,包含tb测试文件和MATLAB辅助验证
    1.算法运行效果图预览FPGA的仿真图如下:   将数据导入MATLAB,对比结果如下:  2.算法运行软件版本MATLAB2022a vivado2019.2 3.部分核心程序  `timescale1ns/1ps////Company://Engineer:////CreateDate:2023/01/1901:47:15//DesignNa......
  • 详解 Muduo 网络服务和日志模块
    这篇文章主要目的是介绍muduo的网络服务模块和日志模块。muduo网络服务在muduo网络库中,最重要的初始化服务,需要涉及两个核心模块,muduo::net::EventLoop和muduo::net::TcpServer。muduo::net::EventLoop不需要我们去设置,我们需要做的只是给Server指定一个EventLoop对象,并......
  • 详解 Protobuf 在 C++ 下 Message、enum、Service 的使用
    这篇文章主要目的是介绍Protobuf的常用知识,包括前置声明,message,service,enum等。声明//使用proto3语法syntax="proto3";//定义一个名为Greeter的包packageGreeter;//开启生成通用服务代码的选项optioncc_generic_services=true;syntax用于提示pro......