我通过 JNI 调用 C++ 方法,该方法创建两个文件。给定目录中的文本日志文件和 pdf 文件。我想在执行 JNI 方法之前删除这些文件(如果存在)。
我正在使用 Apache commons.io (FileUtils.forceDelete(File file)) 来实现此目的。当我执行时,我得到一个 IOException:
java.io.IOException: Unable to delete file: D:\Folder\file.log
在使用 File.canWrite() 方法触发删除方法之前,我检查文件的可写状态。它对于文件和父目录都返回 true。
您知道为什么我在删除文件时遇到问题吗?据我所知,创建文件的 C++ 方法在方法完成后将关闭或解锁它们。无论如何,我无权访问 C++ 代码的源代码,因此我无法检查情况是否属实或修改代码。
谢谢,马可
几乎可以肯定它已被另一个进程锁定。如果它是在操作系统级别锁定的另一个进程(假设您使用文本编辑器打开了该文件),那么您不会有太多运气。如果有其他东西锁定文件,即使是 Windows 资源管理器也可能无法删除该文件。不过看看java.nio.channels.FileLock http://docs.oracle.com/javase/7/docs/api/java/nio/channels/FileLock.html进行相关API调用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)