java文件删除不了的坑,特别是压缩文件问题
java文件删除不了的坑,特别是压缩文件
我们在用java删除文件的时候通常直接调用file.delete();方法就行了,但是很多情况下却删除不了
下面列举一些情况:
1.是文件夹且不为空,这个没什么好说的,可以先删除文件夹里的文件再删除这个文件夹;
2.被别的进程占用,这不仅java不能删,就算windows手动删也删不了;
3.跟这个文件的流没有关闭,这个是最常见的原因了
然而我遇到的是上传一个文件,然后跟这个文件有关的流也关闭了,还是删除不了,后来发现有人把这个文件偷偷的转换成zip压缩文件了。

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

java.util.zip.ZipFile.close()方法关闭ZIP文件。
关闭此ZIP文件将关闭以前由调用getInputStream()方法返回的所有输入流。
这个方法连流都给我们关闭了!
就不用我们手动关闭zip文件的流了,最后在调用file.delete()方法就可以删除文件了
java删除本地文件问题
/**
* 删除单个文件
*
* @param pathName 删除文件路径名
* @return
*/
public boolean deleteFiles(String pathName) {
boolean flag = false;
//根据路径创建文件对象
File file = new File(pathName);
//路径是个文件且不为空时删除文件
if (file.isFile() && file.exists()) {
flag = file.delete();
}
//删除失败时,返回false
return flag;
}总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Resilience4J通过yml设置circuitBreaker的方法
Resilience4j是一个轻量级、易于使用的容错库,其灵感来自Netflix Hystrix,但专为Java 8和函数式编程设计,这篇文章主要介绍了Resilience4J通过yml设置circuitBreaker的方法,需要的朋友可以参考下2022-10-10
Spring Boot中使用RabbitMQ 生产消息和消费消息的实例代码
本文介绍了在SpringBoot中如何使用RabbitMQ进行消息的生产和消费,详细阐述了RabbitMQ中交换机的作用和类型,包括直连交换机、主题交换机、扇出交换机和头交换机,并解释了各自的消息路由机制,感兴趣的朋友一起看看吧2024-10-10


最新评论