Java file.delete删除文件失败,Windows磁盘出现无法访问的文件问题
问题描述
上传文件后,需要删除临时的文件,删除返回的是true,但是磁盘中的文件还是存在,但是不能访问,提示无法访问的文件,“访问被拒绝”或类似的错误消息,当我尝试使用资源管理器复制它们时,它还声称我没有权限,当我用资源管理器检查其“属性”时,它显示了“您无权查看或编辑此对象的权限”。
但是当我把java程序停止后,文件便消失了。
我猜想是java程序占用了文件,然后调试查看,是什么程序占用了文件。
查看占用
Windows 查看文件占用的方法
- 1.Windows自带的方式
- 2.杀毒软件的功能
1.打开资源监视器
打开任务管理器:切换到性能页面,选择底部的打开资源监视器。
2.查找进程
- 切换到CPU页面。
- 展开关联的句柄。
- 搜索框中输入被占用的文件名或文件夹名。
- 等待搜索结果(有一些耗时)。
- 如果有占用,这里可以看到进程,我查看到的是java进程暂用,我猜想是文件流没关闭,或者是其他的没关闭。
解决方案
我的场景是合并文件后,再删除临时文件。
原来用的是Files.write();的方法,没地方去关闭文件流,后来改成原生的IO流的方式FileOutputStream、FileInputStream自己去关闭流,这样文件就没有占用了。
大家可以自己一步一步调试,看是哪一步java占用的文件。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
在spring boot3中使用native image的最新方法
这篇文章主要介绍了在spring boot3中使用native image ,今天我们用具体的例子来给大家演示一下如何正确的将spring boot3的应用编译成为native image,需要的朋友可以参考下2023-01-01apollo更改配置刷新@ConfigurationProperties配置类
这篇文章主要为大家介绍了apollo更改配置刷新@ConfigurationProperties配置类示例解析,apollo更改配置刷新@ConfigurationProperties配置类2023-04-04关于request.getRequestDispatcher().forward()的妙用及DispatcherType
这篇文章主要介绍了关于request.getRequestDispatcher().forward()的妙用及DispatcherType对Filter配置的影响,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-01-01
最新评论