Java 无法重命名或删除文件实例

Java 无法重命名或删除文件实例,java,debugging,maven-2,maven-plugin,io,Java,Debugging,Maven 2,Maven Plugin,Io,我正在编写一个Maven插件,它使用File.delete()和File.renameTo(File)JDK方法删除和重命名各种文件 大约每隔一秒钟,我运行插件时,其中一个操作就会失败,每次失败时,都是一个不同的文件,无法删除或重命名。为什么不能删除文件,一个明显的解释是另一个进程正在使用它(我在Windows上运行),但我不知道哪个进程可能负责。这个问题无法持续重现的事实表明存在线程问题,但AFAIK、Maven插件是在单个线程中运行的。很难获得有关问题原因的任何信息,因为上面提到的方法不抛出

我正在编写一个Maven插件,它使用
File.delete()
File.renameTo(File)
JDK方法删除和重命名各种文件

大约每隔一秒钟,我运行插件时,其中一个操作就会失败,每次失败时,都是一个不同的文件,无法删除或重命名。为什么不能删除文件,一个明显的解释是另一个进程正在使用它(我在Windows上运行),但我不知道哪个进程可能负责。这个问题无法持续重现的事实表明存在线程问题,但AFAIK、Maven插件是在单个线程中运行的。很难获得有关问题原因的任何信息,因为上面提到的方法不抛出异常,它们只返回false

是否有一种方法可以通过编程检测锁定的文件和持有锁定的进程的名称?或者,如果有人对如何调试此类问题有其他建议,请发送给他们

谢谢, Don

可以让您了解文件上有哪些进程句柄

示例输出(它是一个命令行实用程序):

可以让您了解文件上有哪些进程句柄

示例输出(它是一个命令行实用程序):


很难说没有看到任何代码。暗中捅了两刀:当您打开Windows的文件资源管理器并查看有问题的文件时,您可能无法删除它,因为资源管理器正在锁定该文件。你确定要关闭IO流吗?不接受可能提供失败原因线索的异常?很难说没有看到任何代码。暗中捅了两刀:当您打开Windows的文件资源管理器并查看有问题的文件时,您可能无法删除它,因为资源管理器正在锁定该文件。你确定要关闭IO流吗?不接受可能提供失败原因线索的异常?我认为这对我没有多大帮助,因为在启动程序之前,我不知道哪个文件将无法删除(或重命名)。@don:所以你以后再运行它。。。很可能相同的进程仍会保留资源。我认为这对我没有多大帮助,因为在启动程序之前,我不知道哪个文件将无法删除(或重命名)。@don:所以你以后再运行它。。。很可能相同的过程仍然会保留资源。
C:\Users\Jon\Downloads\Handle>handle Test.cs

Handle v3.42
Copyright (C) 1997-2008 Mark Russinovich
Sysinternals - www.sysinternals.com

Test.exe           pid: 6088    190: C:\Users\Jon\Test\Test.cs