如何删除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