代码如下:
import java.io.File; import java.util.Scanner; /** * @Author juna3066 * @Date 2019/3/29 * */ public class Delete { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (true) { System.out.println("input file name:(input 'wq' to exit!)"); String input = sc.nextLine(); if ("wq".equals(input)) { System.out.println("break"); break; } File file = new File(input); if(!file.exists()){ //调用删除前判断是否存在file。 //这是判断files是文件或者文件夹的前提 System.out.println("not exists..."); }else{ deleteAll(file); System.out.println("delete ok!"); } System.out.println("----------------------------------------"); } } /** * 递归删除,先删除跟,后删除自己 * 注意的是f.delete()方法针对空文件夹可以直接删除,非空则不能 * * 这个和遍历出该目录下所有文件的代码差不多,只是在递归调用的后面多了一个删除。 * @param file */ private static void deleteAll(File file) { if(file.isFile()) { //删除文件 System.out.println(file.getName()+"file delete ok!"); file.delete(); }else{ File[] files = file.listFiles(); for (File f : files) { //递归删除,文件夹下的文件都删除干净 deleteAll(f); } //这一点很重要,然后删除这个文件 System.out.println(file.getName()+"directory delete ok!!"); file.delete(); } } }