java删除文件时总是返回false|java删除文件时总是返回false,删不掉的解决方案
目录
- java删除文件时总是返回false,删不掉
- 我的解决
- java文件删除不了的坑,特别是压缩文件
- 下面列举一些情况
- java.util.zip.ZipFile.close()方法关闭ZIP文件
java删除文件时总是返回false,删不掉 今天写了个简单的文件删除的程序:代码如下:
public static boolean deleteFiles(File[] files){boolean flag = false; for(File file:files){// 路径为文件且不为空则进行删除if (file.isFile() && file.exists()) { flag = file.delete(); System.out.println(flag); }}return flag; }
我的文件都是存在的,但是就是经常性的删不了,不知道怎么回事,我单独测试的时候是可以的,感觉很是奇怪,上网查,人家说是可能的情况有:
- 1、多线程操作
- 2、打开的文件流没有关闭
- 3、需要垃圾回收下
我的解决
分析下我的情况,我的是单线程的,所以第一种情况不存在,第二种情况我关闭我所有打开的文件流但是还是不行,后来我在程序中加了行System.gc(); ,结果就真的可以了,一下是修改后的:
public static boolean deleteFiles(File[] files){boolean flag = false; for(File file:files){// 路径为文件且不为空则进行删除if (file.isFile() && file.exists()) {System.gc(); //加上确保文件能删除,不然可能删不掉flag = file.delete(); System.out.println(flag); }}return flag; }
java文件删除不了的坑,特别是压缩文件 我们在用java删除文件的时候通常直接调用file.delete();方法就行了,但是很多情况下却删除不了
【java删除文件时总是返回false|java删除文件时总是返回false,删不掉的解决方案】
下面列举一些情况
- 1、是文件夹且不为空,这个没什么好说的,可以先删除文件夹里的文件再删除这个文件夹
- 2、被别的进程占用,这不仅java不能删,就算windows手动删也删不了
- 3、跟这个文件的流没有关闭,这个是最常见的原因了
文章图片
然后删除这个bookFile死活删除不了,如果出现这种情况,这个zipFile最后一定要close;
文章图片
java.util.zip.ZipFile.close()方法关闭ZIP文件
关闭此ZIP文件将关闭以前由调用getInputStream()方法返回的所有输入流。这个方法连流都给我们关闭了!就不用我们手动关闭zip文件的流了,最后在调用file.delete()方法就可以删除文件了
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 事件代理
- Java|Java OpenCV图像处理之SIFT角点检测详解
- django-前后端交互
- 如何在Mac中的文件选择框中打开系统隐藏文件夹
- java中如何实现重建二叉树
- 使用composer自动加载类文件
- 数组常用方法一
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- Java|Java基础——数组