您好,欢迎访问一九零五行业门户网

java中怎么删除文件和目录

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中怎么删除文件和目录的详细内容。
其它类似信息

推荐信息