当前位置: 首页 > news >正文

Java文件操作(遍历目录中的文件,找到并删除有指定关键字的文件)

对于通过java对文件继续读取和写入的操作推荐看读取文件和写入文件操作

题目

        扫描指定目录中的文件,并找到名称中包含指定字符的所有普通文件(不包括目录),并后续询问用户是否要删除该文件

题目分析

        实际上题目就要求我们对一个指定的目录下的文件进行遍历,并找出文件名称中带有指定字符的普通文件,并询问用户是否需要删除该文件

代码展示

package 文件操作;import java.io.File;
import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User: wuyulin* Date: 2023-08-07* Time: 11:23*///文件操作练习
//扫描指定目录,并找到名称中包含指定字符的所有普通文件(不包括目录),并后续询问用户是否要删除该文件
public class Demo5 {private static Scanner scanner=new Scanner(System.in);public static void main(String[] args) {System.out.print("请输入要进行查找的根目录路径:");//将用户输入的根目录地址作为参数实例化一个File类型的对象File rootDir=new File(scanner.next());if(!rootDir.isDirectory()){System.out.println("输入的路径不是一个合法目录");return;}System.out.print("请输入要删除的文件的关键字:");String word=scanner.next();//开始遍历目录中的数据recurDir(rootDir,word);}//通过深度优先遍历去递归遍历完目录中的数据private static void recurDir(File rootDir,String word){//通过listFiles方法获得rootDir根目录下的所有文件File[] files=rootDir.listFiles();//当目录是非法的目录,或是空的目录就直接returnif(files==null||files.length==0){return;}for(File f:files){//打印每一个遍历到的文件的路径,进行监视System.out.println(f.getAbsolutePath());//当前遍历到的这个文件是目录的话就要递归进入这个目录,去遍历该目录中的内容if(f.isDirectory()){recurDir(f,word);}else { //当前遍历到的文件是普通文件,就要判断是否含有关键词,是否需要删除deleteFile(f,word);}}}private static void deleteFile(File file,String word){if(!file.getName().contains(word)){return;}System.out.println("找到了"+file.getAbsolutePath()+"文件,是否需要删除(Y/N)");String choice=scanner.next();//choice是一个String类型的对象,所以choice是一个引用,指向String对象所在内存空间的地址//所以String类型的对象进行比较要使用equalsif(choice.equals("y")||choice.equals("Y")){file.delete();}}
}

        1,首先对于指定目录下文件的遍历,采用的是深度优先遍历的思想,当我们遍历文件的时候要是遇到的是普通的文件,就判断名称是否含有指定字符,要是遇到目录,就要进行递归,进入目录中遍历该目录中的文件,继续进行相同的操作

        2.通过目录对象调用listFiles方法可以获得该目录下所有的文件,将其存入文件数组中,遍历文件数组中的每一个文件,当该文件是目录,那么就要进行递归,进入该目录中进行相同的操作,要是该文件是普通文件,就要进行判断,询问用户,删除等操作

        3.在deleteFile方法中,通过file.getName().contains(word)获得文件的名称并判断文件名称中是否含有指定字符word

        4.当判断用户输入的时候由于choice是String类型,是对象,所以choice只是一个引用(地址),所以不能直接用==来判断是否相等,要通过调用equals方法才能判断值是否相等。

http://www.lryc.cn/news/117237.html

相关文章:

  • MySQL单表查询
  • 苹果正在测试新款Mac mini:搭载M3芯片 配备24GB大内存
  • redis的缓存更新策略以及如何保证redis与数据库的数据一致性
  • k8s--使用cornJob定时执行sql文件
  • Qt事件过滤器
  • Java基础集合框架学习(上)
  • 北京多铁克FPGA笔试题目
  • 从初学者的角度来理解指针常量和常量指针
  • C# OpenCvSharp 去水印 图像修复
  • 考研算法第40天:众数 【模拟,简单题】
  • MySQL:内置函数、复合查询和内外连接
  • 【HTML】label 标签
  • python视频流截图(按帧数)
  • MongoDB SQL
  • node js连接mysql数据库
  • 通过Python模拟计算附近WIFI密码,没有我蹭不到的网
  • ubuntu20.04 远程桌面配置记录【亲测好用】
  • 解决selenium的“can‘t access dead object”错误
  • Docker Dockerfile 使用方法
  • (6)(6.3) 复合连接的故障处理
  • 报考红帽认证难不,红帽认证考试容易吗?
  • 如何优雅地用VS编写C#代码——快捷键的使用
  • 微服务——操作索引库+文档操作+RestClient操作索引库和文档(java程序)
  • 【性能测试】性能数据采集工具nmon安装使用及报告参数含义详解
  • 『PostgreSQL』在 PostgreSQL中创建只读权限和读写权限的账号
  • 基于Java+SpringBoot+Vue的网上书城管理系统设计与实现(源码+LW+部署文档等)
  • 安全渗透——AWK知识整理
  • 计算机视觉的应用9-视觉领域中的61个经典数据集【大集合】的应用与实战
  • Go中for循环的遮挡效应
  • UE4 Cesium 学习笔记