java中怎么删除文件和目录
Java  /  管理员 发布于 8年前   169
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中怎么删除文件和目录的详细内容,更多请关注其它相关文章!
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号