Java 删除文件及文件夹删除不了的解决

 更新时间:2021年09月15日 09:11:49   作者:如漩涡  
这篇文章主要介绍了Java 删除文件及文件夹删除不了的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Java 删除文件及文件夹删除不了

问题所在

今天在编写一个项目,流程是先创建一个临时文件夹存放生成的文件,再经过压缩导出,待导出成功后删除临时文件夹,但是怎么也删除不了,还以为是写的删除方法有问题,找来找去,试了很多方法也删除不了

代码

本来以为是打包的流没关闭,但是发现流都是关闭的,后来发现,是在生成的方法里,直接new FileWriter出来的,没有关闭,在这里提醒一下,关于操作文件或者文件夹一定都会用到流,所以用到的流一定要检查一遍是否用完关闭了。

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

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

下面列举一些情况

  • 1.是文件夹且不为空,这个没什么好说的,可以先删除文件夹里的文件再删除这个文件夹;
  • 2.被别的进程占用,这不仅java不能删,就算windows手动删也删不了;
  • 3.跟这个文件的流没有关闭,这个是最常见的原因了

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

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

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

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 浅谈mybatis中的#和$的区别

    浅谈mybatis中的#和$的区别

    下面小编就为大家带来一篇浅谈mybatis中的#和$的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • Servlet服务端实现原理详解

    Servlet服务端实现原理详解

    Servlet是Sun公司开发动态web的一门技术,Sun公司在这些API中提供了一个接口叫做:Servlet,如果想开发一个Servlet程序,只需要完成两个小步骤:编写一个类,实现Servlet接口、把开发好的Java类部署到web服务器中。但是你了解Servlet实现的原理吗
    2022-07-07
  • Spring Boot 中实现跨域的多种方式小结

    Spring Boot 中实现跨域的多种方式小结

    Spring Boot提供了多种方式来实现跨域请求,开发者可以根据具体需求选择适合的方法,在配置时,要确保不仅考虑安全性,还要兼顾应用的灵活性和性能,本文给大家介绍Spring Boot 中实现跨域的多种方式,感兴趣的朋友一起看看吧
    2024-01-01
  • SpringBoot热部署配置过程

    SpringBoot热部署配置过程

    这篇文章主要介绍了SpringBoot热部署配置过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • Spring的@Scheduled 如何动态更新cron表达式

    Spring的@Scheduled 如何动态更新cron表达式

    这篇文章主要介绍了Spring的@Scheduled 如何动态更新cron表达式的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java代码中如何去掉烦人的“!=null”

    Java代码中如何去掉烦人的“!=null”

    这篇文章主要介绍了Java代码中去掉烦人的“!=null”,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Java源码解析HashMap的resize函数

    Java源码解析HashMap的resize函数

    今天小编就为大家分享一篇关于Java源码解析HashMap的resize函数,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • 解决RedisTemplate的key默认序列化器的问题

    解决RedisTemplate的key默认序列化器的问题

    这篇文章主要介绍了解决RedisTemplate的key默认序列化器的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Java中的private、protected、public和default的区别(详解)

    Java中的private、protected、public和default的区别(详解)

    下面小编就为大家带来一篇Java中的private、protected、public和default的区别(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • springboot使用自定义注解实现aop切面日志

    springboot使用自定义注解实现aop切面日志

    这篇文章主要为大家详细介绍了springboot使用自定义注解实现aop切面日志,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09

最新评论