javaee---IO代码练习

实现一个小程序要求: 扫描指定目录,并找到名称中包含指定字符的所有普通文件(不包含目录),并且要求询问用户是否要删除这个文件

代码示例

public static void main(String[] args) {
        //1.先让用户指定一个要扫描的目录
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入您要扫描的目录: ");
        String path = scanner.next();
        //判断一下用户输入的目录是否是合法目录
        File rootPath = new File(path);
        if(!rootPath.isDirectory()) {
            System.out.println("您输入的目录非法!请检查后重新输入");
            return;
        }
        //2.再让用户指定一个要查询的关键词
        System.out.println("请输入要查询的关键词: ");
        String word = scanner.next();
        //3.可以进行递归扫描了
        scanDir(rootPath,word);
    }

    private static void scanDir(File rootPath, String word) {
        //1.先列出rootPath中所有的文件和目录
        File[] files = rootPath.listFiles();
        //System.out.println(Arrays.toString(files));
        if(files == null) {
            return;
        }
        //2.针对数组中的文件做出相应的处理
        for(File f : files) {
            //加个打印日志
            //记录当前扫描到哪个位置
            System.out.println("当前扫描到文件: " + f.getAbsoluteFile());
            if(f.isFile()) {
                //是普通文件,检查文件是否需要删除
                checkDelete(f,word);
            } else {
                //是目录
                //继续递归的搜索
                scanDir(f, word);
            }
        }
    }

    private static void checkDelete(File f, String word) {
        if(!f.getName().contains(word)) {
            //表示当前的文件不需要删除
            return;
        }
        System.out.println("当前的文件为" + f.getAbsolutePath()+"请确认是否要删除(Y/N)");
        Scanner scanner = new Scanner(System.in);
        String s = scanner.next();
        if(s.equals("Y") || s.equals("y")) {
            //表示当前的文件需要删除
            f.delete();
            System.out.println("删除完毕!");
        } else {
            //表示当前的文件不需要删除
            System.out.println("取消删除");
        }
     }

结果测试
在这里插入图片描述
我们可以根据代码运行的结果查看到,递归查找代码的每一个文件
在这里插入图片描述
查找完111紧接着查找222和333

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu安全加固

知识背景: 项目背景: 常用命令: useradd: adduser: getent passwd: getent group: id username: adduser newname sudo: 修改shell为/bin/bash 新用户默认为/bin/sh,可以通过echo $SHELL查询,默认不能使用TAB…

Linux系统之touch命令的基本使用

Linux系统之touch命令的基本使用 一、touch命令介绍1. touch命令简介2. touch命令作用 二、touch命令帮助1. touch命令的帮助信息2. touch命令的选项解释 三、touch命令的基本使用1. 查看touch工具版本2. 创建空文件3.查看空文件属性4. 修改文件时间戳5. 文件不存在时不创建 四…

剪画小程序:”霸屏各大平台“的黏土滤镜是怎么制作的呢?

最近,网上出现大量“黏土”风格的人物照片。尤其是在社交平台,这类型的分享数量急剧上升。 这是马斯克开车的样子 还有这张是周杰伦七里香的专辑图片 一张照片,十几秒钟,就能还原出你在黏土世界的样子。 以上这些照片是用-【剪画…

B站尚硅谷git学习记录

文章目录 一、Git概述1.何为版本控制2.为什么需要版本控制3.版本控制工具 二、Git常用命令1.设置用户签名1.1 基本语法1.2 案例实操 2.初始化本地库2.1 基本语法2.2 案例实操 3.查看本地库状态3.1基本语法3.2 案例实操(1)首次查看(工作区没有…

共筑信创新生态:DolphinDB 与移动云 BC-Linux 完成兼容互认

近日,DolphinDB 数据库软件 V2.0 与中国移动通信集团公司的移动云天元操作系统 BC-Linux 完成兼容性适配认证。经过双方共同严格测试,DolphinDB 性能及稳定性等各项指标表现优异,满足功能及兼容性测试要求。 此次 DolphinDB 成功通过移动云 B…

Linux——Linux服务管理

服务管理大作业要求: 基本拓扑如下: 按照要求完成基本的系统管理任务: 完成所有系统的主机名、网络配置; 本次作业共需要3台虚拟机,分别作为客户端、综合应用服务器、存储服务器。三台虚拟机操作系统均为CentOS-Stream…

文件IO(一)

文件IO(一) 文件IO文件的分类在文件IO下,文件分类按存储的内容分按照操作分 标准IO和文件IO的区别系统调用和库函数的区别 文件IO 把程序暂存在内存的数据,存储到本地外存上 文件的分类 在Linux系统下,文件共分为7类…

基于 RNNs 对 IMDB 电影评论进行情感分类

前言 系列专栏:【深度学习:算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域,讨论了各种复杂的深度神经网络思想,如卷积神经网络、循环神经网络、生成对…

效果炸裂!使用 GPT-4o 快速实现LLM OS

使用 GPT-4o 快速实现LLM OS 什么是 LLM OS?LLM OS 主要有以下5个部分组成: LLM OS 开源实现运行 LLM OS 开源实现 什么是 LLM OS? 关于 LLM OS 的最初构想源自karpathy 在2023年11月11日发布的一条Twitter 动态,这是 LLM OS 概念…

git工作流程

以财务开发为例子: 1. 新建分支 1.1. upstream新建分支:finance-feature 1.2. origin新建对应分支:finance-feature 1.3 新建本地分支 git branch finance-feature 注: 同步远程分支:git fetch upstream feature…

YonBuilder移动开发基础教程——云修复

1 使用场景 在项目开发中,我们经常会遇到一种场景,对于一些已经上架应用市场对外发布的应用,我们需要修改其中部分页面的部分内容样式或功能逻辑,通常的做法是我们修改后,重新编译一个新的版本,然后提交应…

【NumPy】使用NumPy计算相关系数:详解numpy.corrcoef函数及应用

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

Linux--构建进程池

目录 1.进程池 1.1.我们先完成第一步,创建子进程和信道 1.2. 通过channel控制,发送任务 1.3回收管道和子进程 1.4进行测试 1.5完整代码 1.进程池 进程池其产生原因主要是为了优化大量任务需要多进程完成时频繁创建和删除进程所带来的资源消耗&#…

数码论坛|基于SprinBoot+vue的数码论坛系统(源码+数据库+文档)

数码论坛系统 目录 基于SprinBootvue的数码论坛系统 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2 管理员功能模块 3 用户后台管理模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍&am…

【Python编程】给电脑安装最新的 Python3.12.3

笔者最近更换了新的Win11系统,安装最新的Python版本(3.12.3)尝尝鲜。据说这个版本存在一些漏洞,笔者将后续更新编程过程中的相关问题(如果有)。Python3.12.3的安装过程比较简单,在此进行说明。 …

现在AI发展迅猛的情况下,应届生选择Java还是C++?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「Java的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!AI迅猛发展的情况下&#xf…

巅峰对决:OpenAI与Google如何用大模型开创未来

2024年,人工智能领域正引领着一场波澜壮阔的全球技术革命。 5月14日,OpenAI揭开了其新一代多模态人工智能大模型GPT4系列的神秘面纱,其中GPT-4o不仅拥有流畅迷人的嗓音,还展现出幽默、机智和深刻的洞察力……紧接着,在…

Vulnhub靶机 whowantsobeking :1 打靶 渗透详细过程(萌新)

Vulnhub靶机搭建配置 先搭建vulnhub靶机:https://www.vulnhub.com/entry/who-wants-to-be-king-1,610/ 下载镜像之后whowantsobeking.ova后,用VMware Workstation Pro打开依次点击文件-打开,选择我们刚才下载的ova文件打开,修改…

数字化转型瓶颈,无代码轻松破局!

随着信息技术的迅猛发展,企业数字化转型已成为推动业务增长、提升竞争力的关键所在。 然而,在实际操作过程中,许多公司却面临着转型困难、进展缓慢甚至停滞不前的局面。 其中,软件开发作为数字化转型的核心环节,其复杂…

工控屏(触摸屏)怎么连接电脑

一、使用USB接口连接 连接方法:使用USB线连接触摸屏和电脑,触摸屏会自动识别并连接到电脑上。 二、使用HDMI接口连接 连接方法:1.首先要确认您的触摸屏是否有HDMI接口;2.将一端连接到触摸屏,另一端连接到电脑&#…