如何删除Java中的目录内容?

枚举一个目录后,我现在需要删除所有的文件。

我用了:

final File[] files = outputFolder.listFiles(); files.delete(); 

但是这并没有删除目录。

您必须为每个文件执行此操作:

 public static void deleteFolder(File folder) { File[] files = folder.listFiles(); if(files!=null) { //some JVMs return null for empty dirs for(File f: files) { if(f.isDirectory()) { deleteFolder(f); } else { f.delete(); } } } folder.delete(); } 

然后打电话

 deleteFolder(outputFolder); 

要删除有文件的文件夹,不需要循环或recursionsearch。 你可以直接使用:

 FileUtils.deleteDirectory(<File object of directory>); 

该function将删除文件夹及其中的所有文件。

简单的派:)

删除之前,所有文件必须从目录中删除。

有第三方库有很多常用工具,包括那些为你做的:

  • Apache commons-lang FileUtils.forceDelete(..)
  • 番石榴 Files.deleteRecursively(..)

你不能删除一个数组! 这应该会更好:

 for (File f : files) f.delete(); 

但是,如果文件夹不是空的,它将不起作用。 对于这种情况,您将需要recursion下降到文件夹层次结构并删除所有内容。 是的,这是一个耻辱Java默认情况下不能这样做…

您不能删除File数组。 正如所有其他答案build议,您必须删除每个单独的文件之前删除文件夹…

 final File[] files = outputFolder.listFiles(); for (File f: files) f.delete(); outputFolder.delete(); 

这里有一个可能的解决scheme来解决没有图书馆的问题:

 public static boolean delete(File file) { File[] flist = null; if(file == null){ return false; } if (file.isFile()) { return file.delete(); } if (!file.isDirectory()) { return false; } flist = file.listFiles(); if (flist != null && flist.length > 0) { for (File f : flist) { if (!delete(f)) { return false; } } } return file.delete(); } 

使用FileUtils和FileUtils.deleteDirectory();

 for(File f : files) { f.delete(); } files.delete(); // will work