Java 文件目录并发操作:删除特定文件

需求:

爬取某个网站的商品信息存在一个商品文件目录中,每个子商品信息文件夹中都有一个 `goods.txt` 文件 文件,现在不需要了,需要删除它。为了提升操作效率,使用了多线程处理。

代码示例

public static void main(String[] args) {// 设定目标目录路径String targetDirPath = "E:/software/test/toiletrie/";File targetDir = new File(targetDirPath);// 检查目标目录是否存在且是一个目录if (targetDir.exists() && targetDir.isDirectory()) {// 获取目标目录下的所有子文件和子目录File[] subFiles = targetDir.listFiles();if (subFiles != null) {// 创建一个固定大小的线程池ExecutorService executorService = Executors.newFixedThreadPool(10);for (File subFile : subFiles) {// 对每个子目录创建一个任务进行处理executorService.submit(() -> {if (subFile.isDirectory()) {File goodsTxt = new File(subFile, "goods.txt");if (goodsTxt.exists() && goodsTxt.isFile()) {if (goodsTxt.delete()) {System.out.println(goodsTxt.getAbsolutePath() + " 删除成功!");} else {System.out.println(goodsTxt.getAbsolutePath() + " 删除失败!");}}}});}// 关闭线程池,不再接受新任务executorService.shutdown();try {// 等待所有任务完成executorService.awaitTermination(1, TimeUnit.HOURS);} catch (InterruptedException e) {System.err.println("线程池等待中断:" + e.getMessage());}}} else {System.out.println("目标目录不存在或不是一个目录!");}
}
  1. 设定目标目录

    指定目录路径 targetDirPath

  2. 检查目录
    使用targetDir.exists()targetDir.isDirectory() 确保目录存在且是一个有效的目录。

  3. 获取子文件/子目录
    使用 listFiles() 获取目录下的所有文件和子目录。

  4. 线程池并发处理
    创建一个大小为 10 的固定线程池,最多可以有 10 个线程同时执行删除操作。

  5. 处理每个子目录
    在每个子目录中,检查是否存在 goods.txt 文件,如果存在则删除。

  6. 关闭线程池并等待任务完成
    executorService.shutdown():关闭线程池,停止接收新的任务。
    awaitTermination(): 等待所有任务在指定时间内完成。超过一小时未完成抛出异常

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

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

相关文章

Python | Leetcode Python题解之第409题最长回文串

题目: 题解: class Solution:def longestPalindrome(self, s: str) -> int:ans 0count collections.Counter(s)for v in count.values():ans v // 2 * 2if ans % 2 0 and v % 2 1:ans 1return ans

本地部署大模型并使用知识库Windows下Ollama+Docker+MaxKB安装的记录

概要 本文介绍本地部署大模型和知识库的小白方法,可以运行较多种类的大模型,使用的软件为docker和ollama以及MaxKb作为知识库前端。 下载 各安装包可以百度去官网或者github下载或使用,也可以点击下面的的链接和我下载相同的版本。 ollama…

??Nginx实现会话保持_Nginx会话保持与Redis的结合_Nginx实现四层负载均衡

文章目录 一、会话保持与Nginx会话保持Nginx 中的会话保持实现1. 基于 Cookie 的会话保持 expires 指令的语法常见用法expires 的翻译2. 基于 IP 的会话保持 作用底层原理实现示例选择合适的会话保持方法 二、将Nginx实现会话保持与Redis结合1. **配置 Redis 作为会话存储**2. …

Flink CEP(复杂事件处理)高级进阶

Flink CEP(Complex Event Processing,复杂事件处理)是 Apache Flink 中用于复杂事件模式检测的库。它允许用户定义复杂的事件模式,从流数据中检测出符合模式的事件序列。这在实时监控、欺诈检测、用户行为分析等场景中非常有用。 Flink CEP 高级进阶 为了深入理解和使用 …

Lnux-gcc/g++使用

目录 1.gcc/g介绍 1.什么是 gcc / g 2.gcc/g指令格式 2. gcc / g 实现程序翻译的过程 1.预处理(进行宏替换) 2.编译(生成汇编) 3.汇编(生成机器可识别代码) 4.连接(生成可执行文件或库文件) 1.gcc/g介绍 1.什么…

小明震惊OpenAI 的新模型 01

在硅谷的中心,繁忙的咖啡馆和创业中心周围,年轻的软件工程师小明坐在他的办公桌前,面露困惑。科技界一直在盛传一项新的AI突破,但他持怀疑态度,不敢抱太大希望。他认为AI泡沫即将破灭,炒作列车即将出轨&…

【计算机网络】网络通信中的端口号

文章目录 一、引入端口号二、端口号的作用三、端口号的确定 在TCP/IP协议中,传输层有两个重要的协议:TCP(传输控制协议)和UDP(用户数据报协议)。TCP用于提供可靠的数据传输,而UDP则适合用于广播…

电子电气架构 --- 基于ISO 26262的车载电子软件开发流程

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不…

《ImageNet Classification with Deep Convolutional Neural Networks》论文导读

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl《ImageNet Classification with Deep Convolutional Neural Networks》是一篇在深度学习领域具有重要影响力的论文,由Alex Krizhevsky、Ilya Sutskever和Geoffrey E. Hinton等人撰写。该论文主要…

golang实现正向代理http_proxy和https_proxy

package mainimport ("bytes""fmt""io""log""net""net/url""strings" )func main() {// tcp 连接,监听 8080 端口l, err : net.Listen("tcp", ":8080")if err ! nil {l…

FTP、SFTP安装,整合Springboot教程

文章目录 前言一、FTP、SFTP是什么?1.FTP2.SFTP 二、安装FTP1.安装vsftp服务2.启动服务并设置开机自启动3.开放防火墙和SELinux4.创建用户和FTP目录4.修改vsftpd.conf文件5.启动FTP服务6.问题 二、安装SFTP1、 创建用户2、配置ssh和权限3、建立目录并赋予权限4、启动…

TCPIP网络编程(尹圣雨)UDP 轮流收发消息(windows)

端口号写的是 2345 客户端 #include <iostream> #include <winsock2.h> #pragma comment(lib, "ws2_32.lib")using std::cout; using std::endl; using std::cin;int main() {WSADATA wsa;if (WSAStartup(MAKEWORD(2, 2), &wsa) ! 0){cout <<…

Wophp靶场寻找漏洞练习

1.命令执行漏洞 打开网站划到最下&#xff0c;此处的输入框存在任意命令执行漏洞 输入命令whoami 2.SQL注入 搜索框存在SQL注入&#xff0c;类型为整数型 最终结果可以找到管理员账户和密码 3.任意文件上传漏洞 在进入管理员后台后&#xff0c;上传木马文件 访问该文件&…

博客系统测试报告

当我们至少完成了一次项目的功能测试后&#xff0c;我们可以写一篇测试报告出来。在这里&#xff0c;我先完成了功能测试&#xff0c;自动化测试&#xff0c;又进行了弱网测试&#xff0c;我们把它们都编入测试报告&#xff0c;来写出一篇简单的博客系统测试报告 Gitee源码&am…

树莓派5上手

1 安装系统 Raspberry Pi OS 是基于 Debian 的免费操作系统&#xff0c;针对 Raspberry Pi 硬件进行了优化。Raspberry Pi OS 支持超过 35,000 个 Debian 软件包。树莓派 5 可以安装各种系统&#xff0c;但是如果对于系统没有特殊的要求&#xff0c;还是安装 Raspberry Pi OS …

多线程拷贝的基本原理

I/O 设备&#xff08;如硬盘、网络接口等&#xff09;本身是受限的&#xff0c;在任何时刻只能处理一个 I/O 请求。那么&#xff0c;为什么多线程拷贝仍然能够提高性能呢&#xff1f;这涉及到多线程操作的实际底层原理以及系统如何管理 I/O 操作。 多线程拷贝的优势与 I/O 限制…

uniapp登录页面( 适配:pc、小程序、h5)

<!-- 简洁登录页面 --> <template><view class"login-bg"><image class"img-a" src"https://zhoukaiwen.com/img/loginImg/2.png"></image><image class"img-b" src"https://zhoukaiwen.com/im…

KAN 学习 Day4 —— MultKAN 正向传播代码解读及测试

在KAN学习Day1——模型框架解析及HelloKAN中&#xff0c;我对KAN模型的基本原理进行了简单说明&#xff0c;并将作者团队给出的入门教程hellokan跑了一遍&#xff1b; 在KAN 学习 Day2 —— utils.py及spline.py 代码解读及测试中&#xff0c;我对项目的基本模块代码进行了解释…

『功能项目』怪物的有限状态机【42】

本章项目成果展示 我们打开上一篇41项目优化 - 框架加载资源的项目&#xff0c; 本章要做的事情是按照框架的思想构建项目并完成怪物的自动巡逻状态&#xff0c;当主角靠近怪物时&#xff0c;怪物会朝向主角释放技能 首先新建脚本&#xff1a;BossCtrl.cs (通常把xxxCtrl.cs脚…

SpringBoot2:请求处理原理分析-利用内容协商功能实现接口的两种数据格式(JSON、XML)

文章目录 一、功能说明二、案例实现1、基于请求头实现2、基于请求参数实现 一、功能说明 我们知道&#xff0c;用ResponseBody注解标注的接口&#xff0c;默认返回给页面的是json数据。 其实&#xff0c;也可以返回xml结构的数据给页面。 这一篇就来实现一下这个小功能。 二、…