file.delete有时会失败,解决

解决file.delete失败问题

最近在项目中遇到是要FIle的delete方法后,文件一直删除不了,经排查,是当时刚好有文件处于读取状态(可能是文件夹里面直接读取或是java程序后台读取使用InputStreamReader或BufferedOutputStream这种流没有关闭)

解决:在调用这个delete之前使用system.gc()使用java垃圾回收,通知虚拟机希望进行一次垃圾回收,注意:这里并不一定会马上执行垃圾回收,至于什么时候进行回收还是取决于虚拟机,而且也不能保证一定进行回收

这里我是要删除这个文件夹下所有文件,所以使用for循环,由于不确定什么时候虚拟机会进行垃圾回收,所以循环了10次去遍历执行

for (String file : filels) {File fl = new File(file);final boolean result = false;int tryCount = 0;while (!result && tryCount++ < 10) {System.gc();fl.delete();}
}

批量删除某个文件夹下的所有文件

后面觉得效率很低,如果我有1000个文件删除这个去循环太慢了,后面找到一种直接使用window或linux底层命令去执行删除,这个效率会快很多,Runtime和Process都是jdk自带的包(我用的是1.8版本),不用额外引入(url是你传入的需要删除的文件地址)

logger.info("开始删除文件,地址:"+url);
Runtime runtime = Runtime.getRuntime();
// linux版本:String[] args = new String[] {"sh", "-c", "rm -f -r /usr/dir"};
// window版本String[] arg = new String[] {"cmd.exe", "/c", "rd D:\\a\\20210101 /q /s"};
String[] arg = new String[] { "cmd.exe", "/c", "rd " + url + " /q /s" };
try {Process proc = runtime.exec(arg);
} catch (IOException e) {e.printStackTrace();
}

大家可以试试,有问题评论区见!

解决file.delete老是失败的问题,批量删除文件夹下的文件相关推荐

  1. linux替换某个文件夹下所有文件,Linux 批量查找并替换文件夹下所有文件的内容...

    1.批量查找某个目下文件的包含的内容 cd etc grep -rn "查找的内容" ./ 2.批量替换某个目下所有包含的文件的内容 cd etc sed -i "s/查 ...

  2. java中File类应用:遍历文件夹下所有文件

    练习: 要求指定文件夹下的所有文件,包括子文件夹下的文件 代码: package 遍历文件夹所有文件;import java.io.File;public class Test {public sta ...

  3. 批量替换文件夹下的文件与文件夹名

    批量替换文件夹下的文件与文件夹名 打开要修改文件名的路径,在地址栏里输入cmd,打开命令提示符窗口 输入 dir /b >所有文件名.txt ,会生成当前文件夹下所有的文件名称 生成的文件会把自 ...

  4. Python批量为不同文件夹下的文件更名

    1.遇到问题 人脸样本数据中图片本身没有该人脸对应人的名字,需要将名字添加到图片名字中,初始图片和文件名如图  2.解决思路 (1)需要将名字列表中的元素插入到对应角标的文件夹中下的每一个图片中,需要 ...

  5. 小工具:批量替换文件夹下所有文件内容中的指定词

    问题描述: 数据集中的xml信息所标注的文件后缀写错了,应该为jpg,因此需要将所有xml文件的.png修改为.jpg 解决代码: 函数作用:找出某文件夹下的包含指定关键词文件列表,并将关键字修改为目 ...

  6. Linux_mv命令移动文件夹下所有文件以及“Argument list too long”问题的解决方法

    在平时整理文件的时候,需要将一个文件夹下的所有或者指定类型的文件移动到另一个文件夹中,我们可以使用mv命令. 具体格式如下所示: mv /xxx/file/* /xxx/new/ 上面的命令代表了将f ...

  7. win10 快速批量删除快速访问下的文件夹记录

    1. 批量清除文件夹 打开计算机----左键点击快速访问---- 右侧即可出现所有在快速访问下的文件夹,选中想要清除的文件夹,右键单击--选择  从"快速访问"取消固定即可 2. ...

  8. PS自动批量处理文件夹下所有文件

    比如我现在有个文件夹,需要对里面的所有图片使用PS,进行轮廓提取,那么需要怎么做,才能节省时间,效率高呢. 首先直接在ps打开一张图片, 然后使用快捷键alt+F9,跳出命令设置 这里我们设置Shif ...

  9. python 批量替换同文件夹下所有文件的指定内容

    场景: 在工作中有的时候我们会遇到这样的场景,在网上下载下来的资料总是有一些我们不想要的内容. 此时我们怎么批量删除他们呢? import re,os filePath = r"C:\Use ...

最新文章

  1. 2022-2028年中国模胚行业市场研究及前瞻分析报告
  2. JS 正则表达式 0.001 ~99.999
  3. python创建数据集_使用Python从图像创建数据集以进行人脸识别
  4. mysql存储word文档_使用MySQL存储和检索word文档
  5. 如何成为一个合格的算法工程师?这对你来说也许并不是很困难
  6. SpringCloudGateway实现金丝雀发布_05
  7. AI+社交,快手商业化落地之道
  8. 关于HTML5中Video标签无法播放mp4的解决办法
  9. 全面的Spring Boot配置文件详解
  10. 光电整纬机狭缝检测工作原理
  11. poj_3468 线段树
  12. for...in、for...of、forEach()有什么区别
  13. 补码乘法、booth算法、Wallace树
  14. hybrid 单臂路由
  15. 如何给Digspark ATTINY85下载程序
  16. 怎样登陆微信小程序?怎样登陆微信小程序后台?微信小程序成员如何登陆后台管理?微信小程序怎么登录,如何正确登录微信小程序后台?微信小程序如何登录页面?具体操作步骤如下
  17. 「游戏」c++贪吃蛇1.1
  18. 【Gym 100015B】Ball Painting(DP染色)
  19. 电脑html接口是什么意思,笔记本电脑这个接口是什么|笔记本电脑常见接口介绍...
  20. 日语中di,ti,du,这些如何用片假名打出来

热门文章

  1. NTA PEG 异硫氰酸荧光素,NTA PEG FITC,Fluorescein-NTA
  2. 《MySQL性能优化和高可用架构实践》简介与推荐序
  3. UE4卧倒趴着实现思路
  4. 使用sql语句生成报表_SQL Server报表服务:如何使用报表生成器处理常见的最终用户要求
  5. 16.试题编号:2-16 《码头中心船货申报系统》进出港船只申报模块----技能抽查
  6. 锦湖轮胎携手国际汽联F4中国锦标赛深化战略合作,深耕中国市场再迎里程碑
  7. mysql 创建表普通索引_MySQL索引篇,创建表时创建索引
  8. mysql打不开 10061_mysql 10061报错,mysql 10061解决方法,10061问题,mysql学习,mysql启动
  9. 字符串转16进制和16进制数字解码成字符串的方法 ,适用于所有字符(包括中文)
  10. R语言-点估计与极大似然估计