java删除文件时总是返回false,删不掉的解决方案

网友投稿 1687 2022-12-10

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){

// 路径为文件且不为空则http://进行删除

if (file.isFile() && file.exists()) {

System.gc(); //加上确保文件能删除,不然可能删不掉

flag = file.delete();

System.out.println(flag);

}

}

return flag;

}

java文件删除不了的坑,特别是压缩文件

我们在用java删除文件的时候通常直接调用file.delete();方法就行了,但是很多情况下却删除不了

下面列举一些情况

1、是文件夹且不为空,这个没什么好说的,可以先删除文件夹里的文件再删除这个文件夹

2、被别的进程占用,这不仅java不能删,就算windows手动删也删不了

3、跟这个文件的流没有关闭,这个是最常见的原因了

然而我遇到的是上传一个文件,然后跟这个文件有关的流也关闭了,还是删除不了,后来发现有人把这个文件偷偷的转换成zip压缩文件了。

然后删除这个bookFile死活删除不了,如果出现这种情况,这个zipFile最后一定要close;

java.util.zip.ZipFile.close()方法关闭ZIP文件

关闭此ZIP文件将关闭以前由调用getInputStream()方法返回的所有输入流。这个方法连流都给我们关闭了!就不用我们手动关闭zip文件的流了,最后在调用file.delete()方法就可以删除文件了

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java中TESTful架构原理分析
下一篇:Java基础第三篇 构造器与方法重载
相关文章

 发表评论

暂时没有评论,来抢沙发吧~