无法删除带图像的目录

时间:2012-05-18 12:09:30

标签: java directory

我试图用少量文件删除目录的内容,但我无法将其删除。当我尝试方法.delete()时,它会返回false,但.canWrite().canRead()方法会返回true代码。

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

E:\ PROJECT01022012 \ .metadata位于\ .plugins \ org.eclipse.wst.server.core \ TMP4 \ wtpwebapps \ realmap \ PHOTO \ VFIN5CT5651842012 \励志GravityHighRes.jpg

我尝试了thisthis,但没有运气。

public static boolean removeDirectory(File directory){

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

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

     }
     } 

}

2 个答案:

答案 0 :(得分:2)

如果文件已在其他位置打开,则无法删除该文件。例如。在Java中由FileInputStreamFileOutputStream未被关​​闭,或者在enduser的图像查看器/编辑器中的Java上下文之外。

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

答案 1 :(得分: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");