无法通过Java删除目录

在我的应用程序中,我编写了从驱动器中删除目录的代码,但是当我检查File的删除function时,它不会删除该文件。 我写了一些像这样的东西

//Code to delete the directory if it exists File directory = new File("c:\\Report\\"); if(directory.exists()) directory.delete(); 

目录未使用仍然无法删除目录

在Java中,目录删除仅适用于空目录,这会导致以下方法:

 /** * Force deletion of directory * @param path * @return */ static public boolean deleteDirectory(File path) { if (path.exists()) { File[] files = path.listFiles(); for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { deleteDirectory(files[i]); } else { files[i].delete(); } } } return (path.delete()); } 

这个将删除你的文件夹,即使非空,也没有麻烦(当该目录被操作系统锁定时除外)。

为什么要发明一个带有递归删除方法的轮子? 看看apache commons io。 https://commons.apache.org/proper/commons-io/javadocs/api-1.4/

 FileUtils.deleteDirectory(dir); 

要么

 FileUtils.forceDelete(dir); 

这就是你所需要的一切。 还有很多有用的方法来操作文件……

该目录必须为空才能将其删除。 如果它不为空,则需要使用File.listFiles()和File.delete()递归删除它

看文档:

如果此路径名表示目录,则该目录必须为空才能被删除。

你确定目录是空的(也没有隐藏文件)?

另外两种可能性(除了目录不是空的):

  • 运行java程序的用户没有该目录的写/删除权限
  • 该目录由不同的进程使用/锁定(你写的不是,但你是如何确认的?)