使用Java删除文件时出现问题(apache commons io)

9 java io apache-commons apache-commons-io

我通过JNI调用C++方法创建了两个文件.给定目录中的文本日志文件和pdf文件.我想在执行JNI方法之前删除这些文件(如果存在).

我正在使用Apache commons.io(FileUtils.forceDelete(文件文件)).当我执行时,我得到一个IOException:

java.io.IOException: Unable to delete file: D:\Folder\file.log
Run Code Online (Sandbox Code Playgroud)

我在使用File.canWrite()方法触发delete方法之前检查文件的可写状态.它对文件和父目录都返回true.

你知道为什么我在删除文件时遇到问题吗?据我所知,创建文件的C++方法是在方法完成后关闭或解锁它们.无论如何,我无法访问C++代码的源代码,所以我无法检查是否真的如此或修改代码.

谢谢,马可

Nic*_*cue 7

它几乎肯定被另一个进程锁定.如果它是另一个锁定在操作系统级别的进程(比如你让文件打开文本编辑器),那么你将没有太多运气.如果其他东西锁定它,即使是Windows资源管理器也无法删除文件.但是请查看java.nio.channels.FileLock相关的API调用.