无法使用Java删除文件夹

我试图删除只有文件但没有子文件夹但没有成功的文件夹。

码:

File rowFolder = new File(folderPath); String[] files = rowFolder.list(); for (String file : files){ File deleteFile = new File(file); System.out.println("deleting file -"+deleteFile.getName()); deleteFile.delete(); } System.out.println("deleting folder -"+rowFolder.getName()); rowFolder.delete(); 

输出:

 deleting file -testing.pdf deleting file -app_json.json deleting file -photo.jpg deleting folder -bundle_folder 

代码不会删除任何文件夹或任何文件。 这是为什么?

出于多种原因,您可能会收到失败的删除; 该文件可能被文件系统锁定,您可能缺少权限,或者可能被其他进程打开等。

如果您使用的是Java 7或更高版本,则可以使用javax.nio.* API; 它比传统的 java.io.File类更可靠和一致:

 Path fp = file.toPath(); Files.delete(fp); 

如果您想捕获可能的例外:

 try { Files.delete(path); } catch (NoSuchFileException x) { System.err.format("%s: no such" + " file or directory%n", path); } catch (DirectoryNotEmptyException x) { System.err.format("%s not empty%n", path); } catch (IOException x) { // File permission problems are caught here. System.err.println(x); } 

有关Java 7中IO的更多信息,请查看文档

由于您没有检查delete()的返回值,因此您生成的输出毫无意义。 删除可能由于多种原因而失败:

  • 该文件是非空目录
  • 该文件由另一个用户打开(在某些平台上)
  • 您无权删除该文件。

试试这个代码

  public class DeleteDirTest { public static void main(String[] args) throws IOException { DeleteDirTest test = new DeleteDirTest(); boolean result = test.deleteDir(new File("D:/test")); System.out.println(result); } public boolean deleteDir(File file) { if (file.isDirectory()) { String[] children = file.list(); for (int i = 0; i < children.length; i++) { boolean success = deleteDir(new File(file, children[i])); if (!success) { return false; } } } return file.delete(); } } 

尝试这个。 来源: 如何在Java中删除目录

 import java.io.File; import java.io.IOException; public class DeleteDirectoryExample { private static final String SRC_FOLDER = "C:\\mkyong-new"; public static void main(String[] args) { File directory = new File(SRC_FOLDER); //make sure directory exists if(!directory.exists()){ System.out.println("Directory does not exist."); System.exit(0); }else{ try{ delete(directory); }catch(IOException e){ e.printStackTrace(); System.exit(0); } } System.out.println("Done"); } public static void delete(File file) throws IOException{ if(file.isDirectory()){ //directory is empty, then delete it if(file.list().length==0){ file.delete(); System.out.println("Directory is deleted : " + file.getAbsolutePath()); }else{ //list all the directory contents String files[] = file.list(); for (String temp : files) { //construct the file structure File fileDelete = new File(file, temp); //recursive delete delete(fileDelete); } //check the directory again, if empty then delete it if(file.list().length==0){ file.delete(); System.out.println("Directory is deleted : " + file.getAbsolutePath()); } } }else{ //if file, then delete it file.delete(); System.out.println("File is deleted : " + file.getAbsolutePath()); } } }