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

递归遍历目录 和 普通文件的复制 [Java EE]

递归遍历目录

首先

先列出当前目录所包含的内容

File[] files = currentDir.listFiles();if (files == null || files.length == 0) {// 若是空目录或非法目录, 则直接返回return;}

然后

遍历列出的文件, 分情况两种讨论

        for (File f: files) {// 加个日志, 方便查看程序执行情况System.out.println(f.getAbsolutePath());if (f.isFile()) {// 如果当前文件是普通文件, 看看文件名是否包含了 word, 来决定是否删除dealFile(f, word);}else {// 如果当前文件时目录文件, 就递归执行 scanDirscanDir(f, word);}}

最后完整代码展示

private static  Scanner scanner = new Scanner(System.in);public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入要搜索的根目录: ");File rootPath = new File(scanner.next()) ;System.out.println("请输入要删除的关键词:");String word = scanner.next();if (!rootPath.isDirectory()) {System.out.println("您此时输入的路径不是合法目录!");return;}scanDir(rootPath, word);}public static void scanDir(File currentDir, String word) {File[] files = currentDir.listFiles();if (files == null || files.length == 0) {return;}for (File f: files) {System.out.println(f.getAbsolutePath());if (f.isFile()) {dealFile(f, word);}else {scanDir(f, word);}}}private static void dealFile(File f, String word) {if (!f.getName().contains(word)) {System.out.println("未找到你所输入的关键字文件, 程序将结束!");return;}System.out.println("该文件是: "+ f.getAbsolutePath()  + ", 是否要确认删除? (Y/N)");String choise = scanner.next();if (choise.equals("Y") || choise.equals("y")) {f.delete();}}

普通文件复制

// 把文件 A 复制成 文件 B 的基本步骤就是: 先打开文件 A , 依次读取文件 A 的每个字节, 然后再写入文件 B 就可以

// 直接代码展示一下

 public static void main(String[] args) throws IOException {Scanner s = new Scanner(System.in);System.out.println("请输入要复制的文件路径: ");String src = s.next();File srcFile = new File(src);if (!srcFile.isFile()) {System.out.println("您输入的源文件路径非法!");return;}System.out.println("请输入要复制的目标路径: ");String dest = s.next();File destFile = new File(dest);if (!destFile.getParentFile().isDirectory()) {System.out.println("您输入的目标文件路径非法! ");return;}try (InputStream inputStream = new FileInputStream(srcFile);OutputStream outputStream = new FileOutputStream(destFile)){while (true) {byte[] buffer = new byte[20480];int n = inputStream.read(buffer);System.out.printf("n = %x ", n);if (n == -1) {System.out.println("读取到 eof, 循环结束");break;}outputStream.write(buffer,0,n);}}}

相关文章:

递归遍历目录 和 普通文件的复制 [Java EE]

递归遍历目录 首先 先列出当前目录所包含的内容 File[] files currentDir.listFiles();if (files null || files.length 0) {// 若是空目录或非法目录, 则直接返回return;} 然后 遍历列出的文件, 分情况两种讨论 for (File f: files) {// 加个日志, 方便查看程序执行情…...

如何在docker上部署java服务

目录结构 首先 Dockerfile FROM bladex/alpine-java:openjdk17_cn_slimMAINTAINER admin@rsz.comENV TZ=Asia/ShanghaiRUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezoneRUN mkdir -p /xhWORKDIR /xhEXPOSE 8106ADD ./blade-system.…...

Machine Learning 初探

前置知识 pandas 读取文件:read_csv查看信息 describe:查看整体信息,包括每列的平均值、最大最小值、标准差等head:输出头部几行数据columns:输出所有列名loc:查询数据,或是根据索引取对应的数…...

GESP2024年12月认证C++三级( 第三部分编程题(1)数字替换)

参考程序&#xff1a; #include <iostream> #include <vector> #include <algorithm> using namespace std; int a[100010]; // 定义一个数组a&#xff0c;用于存储序列A&#xff0c;数组大小为100010 int main() {int n, k; // 定义变量n和k&#xff0c;…...

IDEA-插件开发踩坑记录-第六坑-UAST依赖问题

背景 简要说明&#xff1a; UAST – Unified Abstract Syntax Tree UAST (Unified Abstract Syntax Tree) is an abstraction layer on the PSI of different programming languages targeting the JVM (Java Virtual Machine). It provides a unified API for working with co…...

单片机总结【GPIO/TIM/IIC/SPI/UART】

一、GPIO 1、概念 通用输入输出口&#xff1b;开发者可以根据自己的需求将其配置为输入或输出模式&#xff0c;以实现与外部设备进行数据交互、控制外部设备等功能。简单来说&#xff0c;GPIO 就像是计算机或微控制器与外部世界沟通的 “桥梁”。 2、工作模式 工作模式性质特…...

信号和槽

connect(信号发送者&#xff0c;发送的信号&#xff0c;信号接收者&#xff0c;信号的处理); 信号函数和槽函数的参数必须是一样的&#xff0c;但信号的参数可以多余槽函数的参数&#xff08;前面的参数类型必须一致&#xff09; 是控件和控件间的信号传递&#xff0c;这两个…...

Window下Redis的安装和部署详细图文教程(Redis的安装和可视化工具的使用)

文章目录 Redis下载地址&#xff1a;一、zip压缩包方式下载安装 1、下载Redis压缩包2、解压到文件夹3、启动Redis服务4、打开Redis客户端进行连接5、使用一些基础操作来测试 二、msi安装包方式下载安装 1、下载Redis安装包2、进行安装3、进行配置4、启动服务5、测试能否正常工…...

1.2.3 使用Spring Initializr方式构建Spring Boot项目

本实战概述介绍了如何使用Spring Initializr创建Spring Boot项目&#xff0c;并进行基本配置。首先&#xff0c;通过Spring Initializr生成项目骨架&#xff0c;然后创建控制器HelloController&#xff0c;定义处理GET请求的方法hello&#xff0c;返回HTML字符串。接着&#xf…...

数据可视化02-PCA降维

一、PCA PCA做什么&#xff1f;找坐标系。 目标&#xff1f;二维降到一维&#xff0c;信息保留最多。 怎么样最好&#xff1f;数据分布最分散的方向&#xff08;方差最大&#xff09;&#xff0c;作为主成分&#xff08;坐标轴&#xff09;。 二、怎么找主成分&#xff1f; …...

大连指令数据集的创建--数据收集与预处理_02

1.去哪儿爬虫 编程语言&#xff1a;Python爬虫框架&#xff1a;Selenium&#xff08;用于浏览器自动化&#xff09;解析库&#xff1a;BeautifulSoup&#xff08;用于解析HTML&#xff09; 2.爬虫策略 目标网站&#xff1a;去哪儿&#xff08;https://travel.qunar.com/trav…...

xr-frame 3D Marker识别,扬州古牌坊 3D识别技术稳定调研

目录 识别物体规范 3D Marker 识别目标文件 map 生成 生成任务状态解析 服务耗时&#xff1a; 对传入的视频有如下要求&#xff1a; 对传入的视频建议&#xff1a; 识别物体规范 为提高Marker质量&#xff0c;保证算法识别效果&#xff0c;可参考Marker规范文档 Marker规…...

【网络安全 | 漏洞挖掘】利用文件上传功能的 IDOR 和 XSS 劫持会话

未经许可,不得转载。 本文涉及漏洞均已修复。 文章目录 前言正文前言 想象这样一个场景:一个专门处理敏感文档的平台,如保险理赔或身份验证系统,却因一个设计疏漏而成为攻击者的“金矿”。在对某个保险门户的文件上传功能进行测试时,我意外发现了一个可导致大规模账户接管…...

达梦数据库系列之安装及Mysql数据迁移

达梦数据库系列之安装及Mysql数据迁移 1. 达梦数据库1.1 简介1.2 Docker安装达梦1.2.1 默认密码查询1.2.2 docker启动指定密码 1.3 达梦数据库连接工具1.3.1 快捷键 2 Mysql数据库迁移至达梦2.1 使用SQLark进行数据迁移 1. 达梦数据库 1.1 简介 DM8是达梦公司在总结DM系列产品…...

FS800DTU联动OneNET平台数据可视化View

目录 1 前言 2 环境搭建 2.1 硬件准备 2.2 软件环境 2.3 硬件连接 3 注册OneNET云平台并建立物模型 3.1 参数获取 3.2 连接OneNET 3.3上报数据 4 数据可视化View 4.1 用户信息获取 4.2 启用数据可视化View 4.3 创建项目 4.4 编辑项目 4.5 新增数据源 4.6 数据过滤器配置 4.6 项…...

ffmpeg avdevice_register_all 注册设备的作用

在 FFmpeg 中&#xff0c;avdevice_register_all() 是一个用于注册所有输入和输出设备的函数。它是 FFmpeg 的 libavdevice 模块的一部分&#xff0c;专门用于处理音频和视频的输入/输出设备&#xff08;如摄像头、麦克风、屏幕捕获等&#xff09;。 以下是对 avdevice_regist…...

使用JS遍历JSON数组

在JavaScript中&#xff0c;遍历JSON对象或数组是一个常见的操作&#xff0c;尤其是在处理复杂数据结构时。这里有几种不同的方法可以根据你的需求进行遍历。 1. 遍历JSON对象 如果你有一个JSON对象&#xff08;实际上在JavaScript中&#xff0c;所有的对象都可以视为JSON对象…...

Go基于协程池的延迟任务调度器

原理 通过用一个goroutine以及堆来存储要待调度的延迟任务&#xff0c;当达到调度时间后&#xff0c;将其添加到协程池中去执行。 主要是使用了chan、Mutex、atomic及ants协程池来实现。 用途 主要是用于高并发及大量定时任务要处理的情况&#xff0c;如果使用Go协程来实现每…...

k8S通过代理将集群外的中间件引入集群内访问 —— 筑梦之路

背景说明 有部分中间件是跑在Kubernetes集群之外&#xff0c;我们希望通过service的方式来访问集群外的中间件&#xff0c;比如访问我们k8s集群外的elasticsearch集群。 ES节点本身又处在一个负载均衡IP&#xff1a;192.168.100.100 之后&#xff0c;但是代理的端口号是9202&am…...

Linux 第三次脚本作业

源码编译安装httpd 2.4&#xff0c;提供系统服务管理脚本并测试&#xff08;建议两种方法实现&#xff09; 一、第一种方法 1、把 httpd-2.4.63.tar.gz 这个安装包上传到你的试验机上 2、 安装编译工具 (俺之前已经装好了&#xff09; 3、解压httpd包 4、解压后的httpd包的文…...

Amazon日本站、欧洲站A+内容翻译怎么做?跨马翻译在多站点运营中的实际应用

【一、从一次上架被拒说起】上个月帮一个做家居品类的卖家朋友处理欧洲站上架问题&#xff0c;他花了两周精心设计的A页面被Amazon审核退回&#xff0c;原因只有一句话&#xff1a;"Please ensure all images contain text in the target marketplace language."&…...

效率提升秘籍:用快马AI自动生成openclaw一键部署与依赖管理脚本

最近在折腾openclaw框架时&#xff0c;发现环境配置真是个效率黑洞。每次在新设备上部署&#xff0c;光是查文档、解决依赖冲突就要花掉大半天。于是琢磨着用自动化工具来优化这个流程&#xff0c;没想到效果出奇的好&#xff0c;今天就把这套方案分享给大家。 环境配置分析器&…...

保姆级教程:为嵌入式Linux(ARM/AArch64)交叉编译带完整符号支持的Perf工具

ARM架构嵌入式Linux系统性能调优实战&#xff1a;Perf工具深度定制指南 在嵌入式系统开发中&#xff0c;性能优化往往是最具挑战性的环节之一。当你的应用在ARM或AArch64架构的嵌入式设备上运行时出现卡顿、延迟或资源耗尽&#xff0c;传统的打印调试和日志分析往往难以定位深…...

比迪丽AI绘画LaTeX集成:学术论文插图自动生成

比迪丽AI绘画LaTeX集成&#xff1a;学术论文插图自动生成 学术写作中&#xff0c;插图制作往往耗时费力&#xff0c;比迪丽AI绘画与LaTeX的集成让这一过程变得智能高效 1. 学术插图制作的痛点与需求 写论文的研究生们都有过这样的经历&#xff1a;花几天时间做实验&#xff0c…...

低代码平台扩展性有多重要?没有这能力,迟早要重构

在企业数字化转型的浪潮中&#xff0c;低代码平台凭借“快速搭建、降低门槛”的核心优势&#xff0c;成为众多企业实现高效开发的首选工具。不少企业在低代码平台选型时&#xff0c;往往过度关注“开发速度”“易用性”等表层指标&#xff0c;却忽略了一个决定平台生命周期的核…...

C语言:数组详解

C语言&#xff1a;数组详解一.数组的基本概念1.基本概念2.主要特性3.基本操作二.数组的创建、初始化与类型1.一维数组的创建2.一维数组的初始化3.数组的类型4.一维数组的常见操作一维数组下标一维数组元素的打印一维数组的输入与输出5.一维数组的内存结构三.多维数组1.基本概念…...

别再折腾虚拟机了!Win10下用Geth 1.13+搭建以太坊私有链完整指南(含常见报错解决)

Windows原生环境高效搭建以太坊私有链实战手册 如果你正在寻找一份真正能解决实际问题的以太坊私有链搭建指南&#xff0c;这篇文章就是为你准备的。不同于那些只展示理想流程的教程&#xff0c;我们将直面Windows环境下最常见的报错、配置陷阱和性能瓶颈。许多开发者习惯在虚拟…...

2025最权威的六大降AI率方案推荐榜单

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 减少AIGC&#xff08;人工智能生成内容&#xff09;的痕迹&#xff0c;要从多方面入手&…...

QuantLib避坑指南:从编译安装到多线程优化的5个实战经验

QuantLib工程化实战&#xff1a;从编译优化到高并发设计的5个关键策略 在金融科技领域&#xff0c;QuantLib作为开源的量化金融计算库&#xff0c;已经成为众多机构的核心基础设施。但将QuantLib真正投入生产环境时&#xff0c;开发团队往往会遇到一系列工程化挑战——从复杂的…...

B站资源下载终极指南:3分钟掌握BiliTools跨平台工具箱

B站资源下载终极指南&#xff1a;3分钟掌握BiliTools跨平台工具箱 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools 还…...