我试图用少量文件删除目录的内容,但我无法将其删除。当我尝试方法.delete()
时,它会返回false
,但.canWrite()
,.canRead()
方法会返回true
代码。
我在系统中的文件路径是:
E:\ PROJECT01022012 \ .metadata位于\ .plugins \ org.eclipse.wst.server.core \ TMP4 \ wtpwebapps \ realmap \ PHOTO \ VFIN5CT5651842012 \励志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();
}
}
}
答案 0 :(得分:2)
如果文件已在其他位置打开,则无法删除该文件。例如。在Java中由FileInputStream
或FileOutputStream
未被关闭,或者在enduser的图像查看器/编辑器中的Java上下文之外。
在Java方面,请确保您没有在任何地方打开文件。确保该文件上的任何FileInputStream
和FileOutputStream
在close()
阻止后使用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");