本文共 6215 字,大约阅读时间需要 20 分钟。
java删除文件目录及文件
Today we will look into Java delete file and java delete directory examples. Earlier we learned how to .
今天,我们将研究Java删除文件和Java删除目录示例。 之前我们学习了如何 。
delete()
method doesn’t do anything and return false. So in this case, we have to recursively delete all the files and then the empty directory. 如果要删除目录,它将检查java File delete()方法是否为空。 如果目录为空,则将其删除,否则delete()
方法不执行任何操作并返回false。 因此,在这种情况下,我们必须递归删除所有文件,然后删除空目录。 Files.walkFileTree()
method. In this method, we can process all the files one by one, and call delete method on single files. 删除非空目录的另一种方法是使用Files.walkFileTree()
方法。 在这种方法中,我们可以一个接一个地处理所有文件,并对单个文件调用delete方法。 Let’s see java delete file example program.
让我们看一下Java删除文件示例程序。
package com.journaldev.files;import java.io.File;public class DeleteFileJava { /** * This class shows how to delete a File in Java * @param args */ public static void main(String[] args) { //absolute file name with path File file = new File("/Users/pankaj/file.txt"); if(file.delete()){ System.out.println("/Users/pankaj/file.txt File deleted"); }else System.out.println("File /Users/pankaj/file.txt doesn't exist"); //file name only file = new File("file.txt"); if(file.delete()){ System.out.println("file.txt File deleted from Project root directory"); }else System.out.println("File file.txt doesn't exist in the project root directory"); //relative path file = new File("temp/file.txt"); if(file.delete()){ System.out.println("temp/file.txt File deleted from Project root directory"); }else System.out.println("File temp/file.txt doesn't exist in the project root directory"); //delete empty directory file = new File("temp"); if(file.delete()){ System.out.println("temp directory deleted from Project root directory"); }else System.out.println("temp directory doesn't exist or not empty in the project root directory"); //try to delete directory with files file = new File("/Users/pankaj/project"); if(file.delete()){ System.out.println("/Users/pankaj/project directory deleted from Project root directory"); }else System.out.println("/Users/pankaj/project directory doesn't exist or not empty"); }}
Below is the output when we execute the above java delete file example program for the first time.
下面是我们第一次执行上述java delete file示例程序时的输出。
/Users/pankaj/file.txt File deletedfile.txt File deleted from Project root directorytemp/file.txt File deleted from Project root directorytemp directory deleted from Project root directory/Users/pankaj/project directory doesn't exist or not empty
Note that temp directory had file.txt and it got deleted first and then directory was empty and got deleted successfully, /Users/pankaj/project was not empty and hence not deleted.
请注意,临时目录具有file.txt,并且首先被删除,然后目录为空并成功删除,/ Users / pankaj / project不为空,因此未删除。
In the subsequent run of the same program, the output is:
在同一程序的后续运行中,输出为:
File /Users/pankaj/file.txt doesn't existFile file.txt doesn't exist in the project root directoryFile temp/file.txt doesn't exist in the project root directorytemp directory doesn't exist or not empty in the project root directory/Users/pankaj/project directory doesn't exist or not empty
Notice that unlike , delete method doesn’t throw IOException.
注意,与不同,delete方法不会引发IOException。
Below is a simple program showing how to delete a non-empty directory. This will work if your directory contains files only.
下面是一个简单的程序,显示了如何删除非空目录。 如果您的目录仅包含文件,则此方法有效。
package com.journaldev.files;import java.io.File;public class JavaDeleteDirectory { public static void main(String[] args) { File dir = new File("/Users/pankaj/log"); if(dir.isDirectory() == false) { System.out.println("Not a directory. Do nothing"); return; } File[] listFiles = dir.listFiles(); for(File file : listFiles){ System.out.println("Deleting "+file.getName()); file.delete(); } //now directory is empty, so we can delete it System.out.println("Deleting Directory. Success = "+dir.delete()); }}
Earlier we had to write recursion based code to delete a directory with nested directories. But with Java 7, we can do this using . Below is the code that you should use to delete a directory. It takes care of deleting nested directories too.
之前,我们不得不编写基于递归的代码来删除带有嵌套目录的目录。 但是对于Java 7,我们可以使用 。 以下是删除目录应使用的代码。 它也需要删除嵌套目录。
package com.journaldev.files;import java.io.IOException;import java.nio.file.FileVisitResult;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;import java.nio.file.SimpleFileVisitor;import java.nio.file.attribute.BasicFileAttributes;public class JavaDeleteDirectoryRecursively { public static void main(String[] args) throws IOException { Path directory = Paths.get("/Users/pankaj/log"); Files.walkFileTree(directory, new SimpleFileVisitor() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attributes) throws IOException { Files.delete(file); // this will work because it's always a File return FileVisitResult.CONTINUE; } @Override public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException { Files.delete(dir); //this will work because Files in the directory are already deleted return FileVisitResult.CONTINUE; } }); }}
That’s all for java delete file and java delete directory examples.
这就是java删除文件和java删除目录示例的全部内容。
Reference:
参考:
翻译自:
java删除文件目录及文件
转载地址:http://qmozd.baihongyu.com/