java中怎么删除文件和目录

互联网 19-11-22

delete()方法可用于删除文件或空目录/文件夹,如果文件被删除,delete()方法返回true,如果文件不存在则返回false。

如果删除目录,delete()方法检查目录是否为空,如果目录为空,则删除目录,否则delete()方法不会执行任何操作并返回false,所以在这种情况下,必须递归删除所有文件,然后再删除目录。

删除非空目录的另一种方法是使用Files.walkFileTree()方法,在这种方法中,可以逐个处理所有文件,并在单个文件对象上调用delete()方法。

删除文件示例:

package com.journaldev.files;import java.io.File;public class DeleteFileJava {     /**      * 此类显示如何在Java中删除文件      * @param args      */     public static void main(String[] args) {         // 带路径的文件名         File file = new File("tmp/tmp2/file.txt");         if(file.delete()){             System.out.println("tmp/tmp2/file.txt File deleted");         }else System.out.println("File tmp/tmp2/file.txt doesn't exist");         // 只提供文件名称         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");         // 删除空的目录         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");         // 试图删除非空目录         file = new File("D:/user/maxsu/project");         if(file.delete()){             System.out.println("D:/user/maxsu/project directory deleted from Project root directory");         }else System.out.println("D:/user/maxsu/project directory doesn't exist or not empty");     }}

注意:与createNewFile()不同,delete方法不会抛出IOException异常。

下面是一个简单的程序,演示如何删除非空目录,如果目录包含有文件,删除目录不会成功。

删除目录示例:

import java.io.File;public class JavaDeleteDirectory {     public static void main(String[] args) {         File dir = new File("D:/worksp/java/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();         }         //现在目录为空,所以可以删除它         System.out.println("Deleting Directory. Success = "+dir.delete());     }}
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("D:/worksp/maxsu/log");         Files.walkFileTree(directory, new SimpleFileVisitor<Path>() {            @Override            public FileVisitResult visitFile(Path file, BasicFileAttributes attributes) throws IOException {                Files.delete(file); // 有效,因为它始终是一个文件                return FileVisitResult.CONTINUE;            }            @Override            public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {                Files.delete(dir); //这将起作用,因为目录中的文件已被删除                return FileVisitResult.CONTINUE;            }         });     }}

推荐教程:java入门教程

以上就是java中怎么删除文件和目录的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 目录
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:java对象拷贝常见面试题

相关资讯