JavaEE 初阶篇-深入了解 File 文件操作(实现文件搜索、非空文件夹删除)

🔥博客主页: 【小扳_-CSDN博客】
❤感谢大家点赞👍收藏⭐评论✍

文章目录

        1.0 File 文件概述

        2.0 创建 File 类对象的方法

        2.1 判断文件类型、获取文件信息的方法

        2.2 创建文件、删除文件的方法

        2.3 遍历文件夹的方法

        3.0 文件搜索与删除

        3.1 文件搜索

        3.2 文件删除


        1.0 File 文件概述

        在 Java 中,File 类是用于表示文件和目录路径的类,它提供了一组方法来操作文件系统中的文件和目录。File 类位于 java.io 包中,是 Java 中处理文件和目录的基本类之一。

        文件是非常重要的存储方式,在计算机硬盘中,即便断电,或者程序终止了,存储在硬盘文件中的数据也不会丢失。

        通过 File 类可以创建文件对象,从而获取文件信息(大小,文件名,修改时间),判断文件的类型,删除文件/文件夹等等。

        重点要注意的是:File 类只能文件本身进行操作,不能读写文件里面存储的数据。

        2.0 创建 File 类对象的方法

构造器:

        1)public File(String pathName):根据文件路径创建文件对象。

        2)public File(String parent,String child):根据父路径和子路径名字创建对象。

        3)public File(File parent,String child):根据父路径对应的文件对象和子路径名字创建文件对象。

代码如下:

import java.io.File;public class demo1 {public static void main(String[] args) {//第一种创建 File 类的方式:根据文件路径创建文件对象File file1 = new File("code_24_4_21/src/Text.text");//第二种创建 File 类的方式:根据父路径和子路径名字创建对象File file2 = new File("code_24_4_21.src/" ,"Text1.text");//第三种创建 File 类的方式:根据父路径对应的文件对象和子路径名字创建文件对象File parent = new File("code_24_4_21/src/");File file3 = new File(parent,"Text2.text");}
}

        需要注意的是:创建 File 对象是指代某一个具体的文件。即使文件本来是不存在,但是也可以创建该 File 文件对象。

        2.1 判断文件类型、获取文件信息的方法

代码如下:

import java.io.File;
import java.text.SimpleDateFormat;public class demo2 {public static void main(String[] args) {File file = new File("D:\\software\\code\\2023_java\\2023_java_code\\code_24_4_21\\src\\MyFile\\MyText.text");//1.0 判断当前文件是否存在boolean boo = file.exists();System.out.println(boo);//2.0 判断当前文件是否是文件boolean boo1 = file.isFile();System.out.println(boo1);//3.0 判断当前文件是否是文件夹boolean boo2 = file.isDirectory();System.out.println(boo2);//4.0 获取文件的名称String name = file.getName();System.out.println(name);//5.0 获取文件的大小,返回字节个数long size = file.length();System.out.println(size);//6.0 获取文件的最后修改时间long lastTime = file.lastModified();SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");System.out.println(simpleDateFormat.format(lastTime));//7.0 获取创建文件对象时,使用的路径String getFilePath = file.getPath();System.out.println(getFilePath);//8.0 获取绝对路径String getAbsolutePath = file.getAbsolutePath();System.out.println(getAbsolutePath);}
}

运行结果:

        2.2 创建文件、删除文件的方法

        创建文件与创建文件对象是两回事:创建文件对象是指代某一个文件,不管文件是否存在,都可以指代;而创建文件是指在获取文件对象且该文件不存在来创建文件。

        1)public boolean createNewFile():创建一个新的文件(文件内容为空),创建成功返回 true ,反之。

代码如下:

import java.io.File;
import java.io.IOException;public class demo3 {public static void main(String[] args) throws IOException {File file = new File("D:\\software\\code\\2023_java\\2023_java_code\\code_24_4_21\\MyText01.text");boolean boo = file.createNewFile();System.out.println(boo);}
}

运行结果:

        2)public boolean mkdir():用于创建文件夹,注意:只能创建一级文件夹。

代码如下:

import java.io.File;public class demo4 {public static void main(String[] args) {File file = new File("D:\\software\\code\\2023_java\\2023_java_code\\code_24_4_21\\src\\DemoFile");boolean b = file.mkdir();System.out.println(b);}
}

运行结果:

        3)public boolean mkdirs():用创建文件夹,注意:可以创建多级文件夹。

代码如下:

import java.io.File;public class demo5 {public static void main(String[] args) {File file = new File("D:\\software\\code\\2023_java\\2023_java_code\\code_24_4_21\\src\\DemoFile\\Demo\\Dir\\");boolean b = file.mkdirs();System.out.println(b);}
}

运行结果:

        4)public boolean delete():删除文件、或者空文件,注意:不能删除非空文件夹。

代码如下:

import java.io.File;public class demo6 {public static void main(String[] args) {File file = new File("D:\\software\\code\\2023_java\\2023_java_code\\code_24_4_21\\MyText01.text");boolean b = file.delete();System.out.println(b);}
}

        这里尤其要注意的是:不能删除非空文件夹。

        2.3 遍历文件夹的方法

        1)public String[] list():获取当前目录下所有的“一级文件名称”到一个字符串数组中返回。

代码如下:

import java.io.File;public class demo7 {public static void main(String[] args) {File file = new File("D:\\software\\code\\2023_java\\2023_java_code");String[] l = file.list();for (String name : l){System.out.println(name);}}
}

        2)public File[] listFiles():获取当前目录下所有的“一级文件对象”到一个文件对象数组中返回。

代码如下:

import java.io.File;public class demo8 {public static void main(String[] args) {File file = new File("D:\\software\\code\\2023_java\\2023_java_code");File[] files = file.listFiles();for (File f:files){System.out.println(f.getAbsoluteFile());}}
}

运行结果:

使用 listFiles 方法时注意事项:

        1)当主调是文件,或者路径不存在时,返回 null 。

        2)当主调是空文件夹时,返回一个长度为 0 的数组。

        3)主调是一个文件夹,且里面有隐藏文件时,将里面所有文件和文件夹的路径放在 file 数组中返回,包含隐藏文件。

        4)当主调是一个文件夹,但是没有权限访问该文件夹时,返回 null 。

        3.0 文件搜索与删除

        3.1 文件搜索

        思想:从指定的路径开始搜索,每一次都获取到当目录下的所有一级文件对象,对文件数组进行遍历,若判断是文件,那么判断是否是目标文件,如果是文件,则返回该文件路径;若判断是文件夹,就要继续获取该文件夹下的一级文件,再来遍历当前新的文件数组,再遍历判断是否是目标文件。

        所以主要思想是遍历当前文件夹数组,判断是文件夹就要递归操作,判断是文件继续判断是否是目标文件。

代码如下:

import java.io.File;public class demo9 {//文件搜索public static void main(String[] args) {findFile("D:\\","WeChat.exe");}public static void findFile(String path,String name){File file = new File(path);//判断该文件是否是文件或者文件本来就不存在if ( file.isFile() || !file.exists()){return;}File[] files = file.listFiles();if (files == null){return;}for (int i = 0; i < files.length; i++) {File temp = files[i];if (temp.isFile()){if (temp.getName().equals(name)){System.out.println("找到目标文件了 --> " + temp.getAbsolutePath());return;}}else {findFile(temp.getAbsolutePath(),name);}}}}

运行结果:

        3.2 文件删除

        之前介绍的 delete() 方法只能删除文件还有空文件夹,但是对于非空的文件夹是不能删除。那么如果非要删除文件夹该怎么办呢?

        删除文件夹思路:将文件夹里面的所有文件先删除掉,对于文件夹里面的文件夹继续获取下一级文件对象数组,同样的想法,继续先将文件先删除掉,对于是文件夹对象了,那么继续获取下一级文件对象数组。

        所以,该思路跟文件查询操作的思路差不多,也是用到了遍历数组,递归操作。

import java.io.File;public class demo10 {public static void main(String[] args) {deleteFile("D:\\software\\ademo");}public static void deleteFile(String dir){if (dir == null){return;}//需要删除的文件夹File file = new File(dir);if (file.isFile() || !file.exists()){return;}File[] files = file.listFiles();if (files == null){return;}for (int i = 0; i < files.length; i++) {File tempFile = files[i];if (tempFile.isFile()){tempFile.delete();}else {deleteFile(tempFile.getAbsolutePath());}}file.delete();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/1318.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WebSocket 快速入门 - springboo聊天功能

目录 一、概述 1、HTTP&#xff08;超文本传输协议&#xff09; 2、轮询和长轮询 3、WebSocket 二、WebSocket快速使用 1、基于Java注解实现WebSocket服务器端 2、JS前端测试 三、WebSocket进阶使用 1、如何获取当前用户信息 2、 后端聊天功能实现 一、概述 HTTP…

PVE grub resue错误修复 lvmid BUG

服务器断电后启动不起来&#xff0c;显示grub resue 找了半天没有找到修复方法。看官方文档有一处Recovering from grub “disk not found” error when booting from LVM 极为类似。https://pve.proxmox.com/wiki/Recover_From_Grub_Failure 下面是处理过程。 使用PVE 6.4启…

Leetcode算法训练日记 | day33

专题九 贪心算法 一、跳跃游戏 1.题目 Leetcode&#xff1a;第 55 题 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 …

机器学习(二)之监督学习

前言&#xff1a; 上一节大概讲解了几种学习方式&#xff0c;下面几张就具体来讲讲监督学习的几种算法。 以下示例中和都是权重的意思&#xff01;&#xff01;&#xff01; 注&#xff1a;本文如有错误之处&#xff0c;还请读者指出&#xff0c;欢迎评论区探讨&#xff01; 1…

MATLAB实现图片栅格化

MATLAB实现图片栅格化 1.读取图片&#xff1a;首先&#xff0c;你需要使用imread函数读取要栅格化的图片。 2.设置栅格大小&#xff1a;确定你希望将图片划分成的栅格大小&#xff0c;即每个栅格的宽度和高度。 3.计算栅格数量&#xff1a;根据图片的总尺寸和栅格大小&#…

Compose 布局

文章目录 Compose 布局ColumnColumn属性使用 RowRow属性使用 BoxBox属性使用 ConstraintLayoutLazyColumnLazyColumn属性使用使用多类型使用粘性标题回到顶部 LazyRowLazyRow属性使用 LazyVerticalGridLazyVerticalGrid属性使用 Compose 布局 Column Compose中的”垂直线性布…

F-logic DataCube3 SQL注入漏洞复现(CVE-2024-31750)

0x01 产品简介 F-logic DataCube3是一款用于光伏发电系统的紧凑型终端测量系统。 0x02 漏洞概述 F-logic DataCube3 /admin/pr_monitor/getting_index_data.php 接口处存在SQL注入漏洞,未经身份验证的攻击者可通过该漏洞获取数据库敏感信息,深入利用可控制整个web服务器。 …

计算机图形学:直线生成算法—DDA

DDA&#xff08;Digital Differential Analyzer&#xff0c;数字差分分析器&#xff09;算法是一种基本的直线生成算法&#xff0c;通常用于计算机图形学中。它通过将直线划分为若干个等间隔的小线段&#xff0c;然后在每个小线段中选择一个像素点进行绘制&#xff0c;从而近似…

产品原型图概念

产品原型图概念 产品原型图作用 如下图&#xff1a; 产品原型图的三种分类 线框图 通过【线段色块文字】描述产品页面。优点&#xff1a;制作快速。 缺点&#xff1a;传递信息容易遗漏。 应用&#xff1a;早期方案讨论&#xff0c;需要快速输出的场景&#xff0c;团队配合…

Learn ComputeShader 01 First Computer Shader

使用Unity版本&#xff1a;2019.4.12f1 整体流程&#xff1a; 1添加一个quad object并添加一个无光照材质 2.相机投影模式设置为正交 3.调整quad使其完全显示在相机内 4.创建脚本并且使用计算着色器覆盖quad的纹理 5.创建一个compute shader 前三步完成以后结果应该是这…

网络基础先导

前言&#xff1a;最好在牢固前面几大件&#xff08;编程语言、数据结构、操作系统&#xff09;&#xff0c;并且您有一个服务器的基础上&#xff08;我使用的是腾讯云中配置最低的服务器&#xff09;再来学习本系列的网络知识。 1.网络发展简要 下面就是简单提及一些概念而已&…

二叉树之AVL树

文章目录 1. AVL树的概念&#xff08;logN)1.1背景1.2规则 2.AVL树节点的定义3.AVL树的插入4. AVL树的旋转(重点&#xff09;4.1 新节点插入较高的右子树的右侧&#xff1a;左单璇&#xff1b;4.2 新节点插入较高左子树的左侧&#xff1a;右单璇&#xff1b;4.3&#xff08;双旋…

AJAX——ajax原理

1.XMLHttpRequest 定义&#xff1a;XMLHttpRequest&#xff08;XHR&#xff09;对象用于与服务器交互。通过XMLHttpRequest可以在不刷新页面的情况下请求特定URL&#xff0c;获取数据。这允许网页在不影响用户操作的情况下&#xff0c;更新页面的局部内容。XMLHttpRequest在AJA…

数据输入输出流(I/O)

文章目录 前言一、数据输入输出流是什么&#xff1f;二、使用方法 1.DataInputStream类2.DataOutoutStream类3.实操展示总结 前言 数据输入输出流也是将文件输入输出流打包后使用的对象。相比于文件输入输出流&#xff0c;数据输入输出流提供了简单易用的方法去操作不同类型的数…

【FreeRTOS】常用API接口

【FreeRTOS】常用API接口 为方便快速检索&#xff0c;这里只留下对应的接口名和功能注释&#xff0c;具体传参和使用方法拿函数名百度搜。 任务相关 xTaskCreate() //创建任务 vTaskDelete( NULL ); //删除任务&#xff0c;传入NULL为删除当前的任务 vTaskStartScheduler()&…

【微服务】spring读取配置文件多种方式深入详解

目录 一、前言 二、java配置文件介绍 2.1 java配置文件产生原因 2.2 项目使用配置文件好处 2.3 springboot项目配置文件的必要性 2.4 微服务架构下配置文件使用场景 三、java读取配置文件常用方法 3.1 使用Properties类读取配置文件 3.1.1 使用getResourceAsStream读取…

时序分析基础(6)——input delay时序分析

1 简介 FPGA对于外部的时钟以及数据的延时信息是不知道的&#xff0c;在低速时钟且时钟发射沿在数据正中心的时候&#xff0c;一般可以不做约束来直接使用。但是到了高速时钟或者双沿采样或者发射沿和数据对齐的情况下&#xff0c;这时候就需要告诉VIVADO外部的时钟与数据情况来…

多轴机械臂/正逆解/轨迹规划/机器人运动学/Matlab/DH法 学习记录03——机械臂运动学逆解

系列文章目录 本科毕设正在做多轴机械臂相关的内容&#xff0c;这里是一个学习机械臂运动学课程的相关记录。 如有任何问题&#xff0c;可发邮件至layraliufoxmail.com问询。 1. 数学基础 2. 机械臂几何法与DH表示法 3. 机械臂运动学逆解 文章目录 系列文章目录一、引言1.手臂…

文件系统和软硬链接

文章目录 文件系统磁盘磁盘逻辑抽象inode 软硬链接软链接硬链接 文件系统 文件分为打开的文件和没有被打开的文件&#xff0c;而只有打开的文件是在内存的&#xff0c;也就是我们之前讲的&#xff0c;然而大部分文件都不是被打开的(当前不需要被访问的)&#xff0c;它们都在磁…

硬盘日常使用中的注意事项

硬盘是计算机中的重要存储设备,负责存储大量的数据。为了确保数据的完整性和硬盘的寿命,日常使用中需要注意以下几点: 避免震动和撞击:硬盘在工作时,内部的磁盘正在高速旋转,任何轻微的震动或撞击都可能导致磁盘损坏或数据丢失。因此,使用硬盘时应确保计算机放置稳定,避…