递归遍历目录 和 普通文件的复制 [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)数字替换)
参考程序: #include <iostream> #include <vector> #include <algorithm> using namespace std; int a[100010]; // 定义一个数组a,用于存储序列A,数组大小为100010 int main() {int n, k; // 定义变量n和k,…...
IDEA-插件开发踩坑记录-第六坑-UAST依赖问题
背景 简要说明: 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、概念 通用输入输出口;开发者可以根据自己的需求将其配置为输入或输出模式,以实现与外部设备进行数据交互、控制外部设备等功能。简单来说,GPIO 就像是计算机或微控制器与外部世界沟通的 “桥梁”。 2、工作模式 工作模式性质特…...
信号和槽
connect(信号发送者,发送的信号,信号接收者,信号的处理); 信号函数和槽函数的参数必须是一样的,但信号的参数可以多余槽函数的参数(前面的参数类型必须一致) 是控件和控件间的信号传递,这两个…...
Window下Redis的安装和部署详细图文教程(Redis的安装和可视化工具的使用)
文章目录 Redis下载地址:一、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项目,并进行基本配置。首先,通过Spring Initializr生成项目骨架,然后创建控制器HelloController,定义处理GET请求的方法hello,返回HTML字符串。接着…...
数据可视化02-PCA降维
一、PCA PCA做什么?找坐标系。 目标?二维降到一维,信息保留最多。 怎么样最好?数据分布最分散的方向(方差最大),作为主成分(坐标轴)。 二、怎么找主成分? …...
大连指令数据集的创建--数据收集与预处理_02
1.去哪儿爬虫 编程语言:Python爬虫框架:Selenium(用于浏览器自动化)解析库:BeautifulSoup(用于解析HTML) 2.爬虫策略 目标网站:去哪儿(https://travel.qunar.com/trav…...
xr-frame 3D Marker识别,扬州古牌坊 3D识别技术稳定调研
目录 识别物体规范 3D Marker 识别目标文件 map 生成 生成任务状态解析 服务耗时: 对传入的视频有如下要求: 对传入的视频建议: 识别物体规范 为提高Marker质量,保证算法识别效果,可参考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 中,avdevice_register_all() 是一个用于注册所有输入和输出设备的函数。它是 FFmpeg 的 libavdevice 模块的一部分,专门用于处理音频和视频的输入/输出设备(如摄像头、麦克风、屏幕捕获等)。 以下是对 avdevice_regist…...
使用JS遍历JSON数组
在JavaScript中,遍历JSON对象或数组是一个常见的操作,尤其是在处理复杂数据结构时。这里有几种不同的方法可以根据你的需求进行遍历。 1. 遍历JSON对象 如果你有一个JSON对象(实际上在JavaScript中,所有的对象都可以视为JSON对象…...
Go基于协程池的延迟任务调度器
原理 通过用一个goroutine以及堆来存储要待调度的延迟任务,当达到调度时间后,将其添加到协程池中去执行。 主要是使用了chan、Mutex、atomic及ants协程池来实现。 用途 主要是用于高并发及大量定时任务要处理的情况,如果使用Go协程来实现每…...
k8S通过代理将集群外的中间件引入集群内访问 —— 筑梦之路
背景说明 有部分中间件是跑在Kubernetes集群之外,我们希望通过service的方式来访问集群外的中间件,比如访问我们k8s集群外的elasticsearch集群。 ES节点本身又处在一个负载均衡IP:192.168.100.100 之后,但是代理的端口号是9202&am…...
Linux 第三次脚本作业
源码编译安装httpd 2.4,提供系统服务管理脚本并测试(建议两种方法实现) 一、第一种方法 1、把 httpd-2.4.63.tar.gz 这个安装包上传到你的试验机上 2、 安装编译工具 (俺之前已经装好了) 3、解压httpd包 4、解压后的httpd包的文…...
使用Taotoken稳定调用大模型API提升智能客服响应效率
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用Taotoken稳定调用大模型API提升智能客服响应效率 构建一个稳定、高效的智能客服系统,是许多技术团队面临的核心挑战…...
融合模糊决策与ECSA优化的软件项目智能风险评估框架
1. 项目概述与核心价值在软件工程这个行当里摸爬滚打十几年,我见过太多项目因为对风险的“视而不见”或“束手无策”而走向失败。项目延期、预算超支、质量滑坡,这些问题的根源往往不是技术本身,而是对潜在威胁的评估和应对失当。传统的风险管…...
机器学习可复现性危机:八大维度解析与工程实践指南
1. 项目概述:为什么我们需要重新审视机器学习的“可复现性”?如果你在机器学习领域摸爬滚打过几年,大概率遇到过这样的场景:兴冲冲地打开一篇顶会论文的GitHub仓库,按照README的指示安装依赖、运行脚本,结果…...
Adobe-GenP 3.0:技术架构深度解析与自动化配置实践
Adobe-GenP 3.0:技术架构深度解析与自动化配置实践 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe-GenP 3.0作为一款开源工具,为Adobe…...
使用Python快速接入Taotoken聚合大模型平台完整教程
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用Python快速接入Taotoken聚合大模型平台完整教程 对于希望快速体验不同大模型能力的Python开发者而言,通过一个统一…...
AppImageLauncher:3步解决Linux应用管理的终极难题
AppImageLauncher:3步解决Linux应用管理的终极难题 【免费下载链接】AppImageLauncher Helper application for Linux distributions serving as a kind of "entry point" for running and integrating AppImages 项目地址: https://gitcode.com/gh_mir…...
腾讯 Ardot 深度评测:一句话画 App,一键转代码,Figma 终于有了一个能打的对手?
2026 年 5 月 18 日,腾讯自研 AI 设计智能体平台 Ardot 正式公测。它不是又一个"AI 画图工具",而是一个真正打通产品、设计、研发三端的协作利器——从一句话生成可编辑设计稿,到一键交付生产级代码,全在一个工具里闭环…...
Gemini SQL查询生成落地手册(企业级生产环境已验证)
更多请点击: https://kaifayun.com 第一章:Gemini SQL查询生成落地手册(企业级生产环境已验证) 在大型金融与电商客户的真实生产环境中,Gemini 模型已被成功集成至自助分析平台,日均稳定生成超 12,000 条符…...
【限时技术白皮书】:DeepSeek全版本演进时间轴+企业级选型 checklist(含许可证限制红线)
更多请点击: https://kaifayun.com 第一章:DeepSeek模型版本选择 DeepSeek 提供多个公开可获取的模型版本,涵盖不同参数规模、推理精度与部署场景需求。正确选择版本是构建高性能AI应用的前提,需综合考量硬件资源、延迟要求、任务…...
终极指南:如何快速掌握UE4 Advanced Sessions Plugin会话管理插件
终极指南:如何快速掌握UE4 Advanced Sessions Plugin会话管理插件 【免费下载链接】AdvancedSessionsPlugin Advanced Sessions Plugin for UE4 项目地址: https://gitcode.com/gh_mirrors/ad/AdvancedSessionsPlugin Advanced Sessions Plugin是虚幻引擎4中…...
