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

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(): 等待所有任务在指定时间内完成。超过一小时未完成抛出异常

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Openharmony 下载到rk3568实现横屏
  • 游戏开发| Unreal5.2-5.4接入chatGPT定制游戏NPC
  • nginx部署时的路径配置问题
  • (备份) esp32 GPIO
  • Excel根据分数排名次,RANK函数来帮忙
  • 股指期货的指数一直贴水是什么意思?
  • 线下活动|落地武汉、长沙高校,10场AI沙龙火爆来袭
  • vue开发遇到的js逻辑判断问题
  • 从简单分析到智能问数,Smartbi AIChat让数据回归业务
  • Android13_SystemUI下拉框新增音量控制条
  • uniapp 发布苹果IOS详细流程,包括苹果开发者公司账号申请、IOS证书、.p12证书文件等
  • 【系统架构设计师-2024年真题】案例分析-答案及详解
  • 无人直播好帮手,视频指定词语消音,消除违禁词,直播视频录制,音视频分离,分段
  • 《Discriminative Class Tokens for Text-to-Image Diffusion Models》ICCV2023
  • 网络安全-dom破坏结合jq漏洞以及框架漏洞造成的xss-World War 3
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 10个最佳ES6特性 ES7与ES8的特性
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • Computed property XXX was assigned to but it has no setter
  • Debian下无root权限使用Python访问Oracle
  • django开发-定时任务的使用
  • express如何解决request entity too large问题
  • HTML中设置input等文本框为不可操作
  • Java 多线程编程之:notify 和 wait 用法
  • JS笔记四:作用域、变量(函数)提升
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • Web设计流程优化:网页效果图设计新思路
  • 给github项目添加CI badge
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 基于web的全景—— Pannellum小试
  • 经典排序算法及其 Java 实现
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • - 转 Ext2.0 form使用实例
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • #、%和$符号在OGNL表达式中经常出现
  • #{}和${}的区别?
  • #宝哥教你#查看jquery绑定的事件函数
  • (1)虚拟机的安装与使用,linux系统安装
  • (2)从源码角度聊聊Jetpack Navigator的工作流程
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
  • (补)B+树一些思想
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (学习日记)2024.01.09
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)setTimeout 和 setInterval 的区别