怎么写 java 递归?解决删除文件夹以及子文件
我最近做的java文档管理里面遇到的一个问题,怎么样?当文件夹里含有文件,删除文件夹,同时把里面的文件一起删除。怎么用递归写?????...
我最近做的java文档管理里面遇到的一个问题,怎么样?当文件夹里含有文件,删除文件夹,同时把里面的文件一起删除。怎么用递归写?????
展开
展开全部
import java.util.Scanner;
import java.io.*;
public class Del {
/**
* @删除文件或文件夹 chsNight
*/
public static String adders;
public static void main(String[] args) throws IOException {
Scanner input = new Scanner(System.in);
System.out.print("请输入要删除的文件地址:");
adders = input.next();
System.out.print("确定删除?(Y/N):");
String sfdel = input.next();
while (sfdel.equalsIgnoreCase("y")) {
del(adders);
break;
}
}
private static void del(String adders) {
File file = new File(adders);
if (file.isFile() == true) { // 如果是文件,直接删除
file.delete();
jg();
} else if (file.isDirectory() == true) { // 如果是文件夹
if (file.listFiles().length == 0) { // 如果是空文件夹
file.delete();
jg();
} else {
int zfiles = file.listFiles().length; // 子文件数量
File[] delfile = file.listFiles(); // 子文件路径
for (int i = 0; i < zfiles; i++) {
if (delfile[i].isDirectory()) {
del(delfile[i].getAbsolutePath()); // 递归调用del方法并取得子目录路径
}
System.out.println(delfile[i]);
delfile[i].delete();
}
file.delete();
jg();
}
} else {
System.out.println("删除失败:不存在该对象!");
}
}
public static void jg() {
System.out.println("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println("\n" + adders + "删除成功!");
}
}
import java.io.*;
public class Del {
/**
* @删除文件或文件夹 chsNight
*/
public static String adders;
public static void main(String[] args) throws IOException {
Scanner input = new Scanner(System.in);
System.out.print("请输入要删除的文件地址:");
adders = input.next();
System.out.print("确定删除?(Y/N):");
String sfdel = input.next();
while (sfdel.equalsIgnoreCase("y")) {
del(adders);
break;
}
}
private static void del(String adders) {
File file = new File(adders);
if (file.isFile() == true) { // 如果是文件,直接删除
file.delete();
jg();
} else if (file.isDirectory() == true) { // 如果是文件夹
if (file.listFiles().length == 0) { // 如果是空文件夹
file.delete();
jg();
} else {
int zfiles = file.listFiles().length; // 子文件数量
File[] delfile = file.listFiles(); // 子文件路径
for (int i = 0; i < zfiles; i++) {
if (delfile[i].isDirectory()) {
del(delfile[i].getAbsolutePath()); // 递归调用del方法并取得子目录路径
}
System.out.println(delfile[i]);
delfile[i].delete();
}
file.delete();
jg();
}
} else {
System.out.println("删除失败:不存在该对象!");
}
}
public static void jg() {
System.out.println("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println("\n" + adders + "删除成功!");
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询