1

我正在尝试删除包含少量文件的目录内容,但无法删除它。当我尝试这些方法.delete()时,它返回一个false, 但是.canWrite().canRead()方法返回true代码。

我在系统中的文件路径是:

E:\PROJECT01022012\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\realmap\PHOTO\VFIN5CT5651842012\Inspirational-GravityHighRes.jpg

我试过这个这个,但没有运气。

public static boolean removeDirectory(File directory){

 if (directory.isDirectory())
    {
     File[] fls=directory.listFiles();

     for (int i = 0; i < fls.length; i++) {
          fls[i].delete();

     }
     } 

}
4

2 回答 2

2

如果文件已在别处打开,则无法删除该文件。例如,在 Java 中由未关闭的FileInputStream或未FileOutputStream关闭的,或在最终用户的图像查看器/编辑器中的 Java 上下文之外。

在 Java 方面,请确保您没有在任何地方打开文件。确保该文件上的任何FileInputStreamFileOutputStream在使用后都被close()阻止finally。确保最终用户本身没有在某些图像查看器/编辑器中打开图片。

于 2012-05-18T12:45:09.787 回答
0

也许您在目录中的文件是只读的?如果是,您可以尝试 setReadOnly(false) - 但我记得那不起作用。它实际上不会从文件中重置只读标志。好吧,可以使用命令调用 Runtime.exec 来解决一些问题,以删除操作系统的文件:

// For windows - option /F to force delete read-only files:
Runtime.getRuntime().exec("DEL /F E:\PROJECT01022012\.metadata\.plugins" +
    "\org.eclipse.wst.server.core\tmp4\wtpwebapps\realmap\PHOTO\VFIN5CT5651842012" +
    "\Inspirational-GravityHighRes.jpg");
于 2012-05-18T12:48:04.240 回答