在JAVA对文件的读写操作中,操作完以后将输入流和输出流及时关闭时很必要的。假如我们有时候忘记关闭了,又不知道在哪个地方去关闭,为了删除该文件,JAVA可以进行强制删除操作。可以使用如下代码进行强制删除:

public boolean forceDelete(File file){

boolean result=file.delete();

if (!result) {

System.gc(); //回收资源

file.delete();

}

return result;

}

如果一次强制回收不成功,那就搞个循环,多来几次,如下代码:

public boolean forceDelete(File file) {

boolean result = file.delete();

int tryCount = 0;

while (!result && tryCount++ < 10) {

System.gc(); //回收资源

result = file.delete();

}

return result;

}

虽然System.gc()可以这样强制解除对文件的占用,但是也不是万能的,因为:

① 及时关闭输入流、输出流是很有必要的

② System.gc()也不是一定能够回收垃圾的,能否成功回收取决于JVM的回收机制,外部人员是无法掌控的。就像我们去吃饭等时间长了催单,我们只是向餐馆提交了我们的申请,能不能快点上菜依然取决于厨师

③ 即使不用System.gc()进行强制回收,JVM的回收机制也会在一段时间后对资源进行回收

④ 这种方法也只对被java程序占用的文件有用,对于被其他进行占用的文件就无能为力了

java 解除文件占用_Java如何强制删除java程序占用的文件相关推荐

  1. 转jpg java源程序_将pdf文件转成图片并删除java源代码

    将pdf文件转成图片并删除java源代码/** * 将pdf转成img */ public static void changePdfToImg() { try { File file = new F ...

  2. java 下载后删除,在服务器端生成文件后,下载后并删除,改了后发现文件变成空白解决思路...

    当前位置:我的异常网» Java Web开发 » 在服务器端生成文件后,下载后并删除,改了后发现文件 在服务器端生成文件后,下载后并删除,改了后发现文件变成空白解决思路 www.myexception ...

  3. 如何解决删除文件时显示已经被另一程序占用打开的问题

    如何解决删除文件时显示已经被另一程序占用打开的问题 方法一 先尝试进入该文件夹后,选择所有文件,进行删除,这个时候往往会删除掉一部分实际上没有被占用的文件夹/文件,然后剩下真正被占用的. 进入还删除不 ...

  4. java catch空指针异常处理_Java基础学习:java文件空指针异常处理

    在Java编程中,我们或多或少地会遇到一些程序异常的情况,为了不影响程序的正常执行,我们需要在程序发生异常的情况下,进行一些操作来防止造成更大的损失.例如在我们平时的除法运算中,被除数是不能为0的,如 ...

  5. Linux 删除文件夹和文件的命令(强制删除包括非空文件)

    linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可. 直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字 -r ...

  6. 三种方式强制删除被拒绝访问的文件夹

    本人尝试了三种方式强制删除被拒绝访问的系统文件夹.分别是:更改文件夹属性的访问权限,第三方工具软件,Windows命令takeown和cacls.最后用cacls成功地删除了系统文件夹. 背景: 以前 ...

  7. java 去掉pdf文字_Java 添加和删除PDF图层

    在PDF文档中,图层可以使部分内容选择性地被隐藏或显示.通过添加图层,我们可以将文本.图片.表格等元素精确定位于页面指定位置,并可将这些元素进行叠放.组合形成页面的最终效果.本文将介绍如何使用Spir ...

  8. linux桌面卷积文件删除不掉,Linux 删除文件夹和文件的命令(强制删除包括非空文件)...

    linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可. 直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字 -r ...

  9. java内存过高_Java应用问题定位系列——内存占用过高

    定位Java程序内存使用过高或者内存泄漏的问题跟CPU也类似,一般可以分为以下3个步骤: 定位进程 定位线程 定位具体方法(代码部分) 一.定位进程 通过top -c(然后按Shift+M按内存排序) ...

最新文章

  1. MySql通用二进制版本在Linux(Ubuntu)下安装与开启服务
  2. JavaScript调用服务器事件
  3. mqtt如何发送心跳 安卓_互联网推送服务原理:长连接+心跳机制(MQTT协议)
  4. 地方旅游产业运行监测与应急指挥平台/旅游资源管理平台/旅游产业监测平台/旅游应急指挥平台/旅游资源统计/旅游线路数据/旅游产业可视化大屏管理系统/餐饮场所数据/游客流量监测/景区数据监测/视频监控
  5. php fpm 平滑重启,nginx、php-fpm平滑重启和重载配置
  6. 激战2:逐火之路-概念艺术设计
  7. Thymeleaf $/*/#/@语法
  8. BE THE PIONEER FROM APSARADB——2018云栖大会·深圳峰会·云数据库在线直播分论坛
  9. 浪潮存储进逼国际一线厂商
  10. notepad++批量操作笔记(持续更新..)
  11. 判断浏览器版本,当浏览器版本过低时提示升级浏览器,不显示原来页面内容
  12. v-for渲染img标签图片
  13. 【一日一logo_day_36】fai
  14. easyui datagrid editor 编辑器的简单活用以及自定义校验
  15. VC学习路线书籍+视频
  16. 58到家数据库30条军规解读(58沈剑)
  17. 转 Sap客户端中英文切换
  18. 2023最新仿挖片自适应电影模板源码+苹果CMS10内核开发
  19. 研发团队如何借助Gitlab来做代码review
  20. 信息不对称状态下的动态零和博弈

热门文章

  1. Jmeter:使用代理录制安卓手机APP性能测试脚本
  2. (二)Python Excel 操作
  3. 使用QT实现一个图像处理软件1 —— 图片的加载和显示
  4. 如何使用matlab进行二维和三维空间的位姿描述及坐标系的变换
  5. Linux设备树是什么?
  6. 电信显示isp服务器超时连不上,wifi连接超时怎么解决,网络能连上但连接超时-
  7. 遗传算法中交叉方法简介及基于适应度的启发式多点交叉
  8. TFT供电电路(VCOM/VGL/VGH/AVDD)设计原理
  9. 思维导图 | XMind 8 Update 8 Pro 自动破解版
  10. Generator函数语法