JAVA怎样删除文件及子文件

2025-06-21 21:46:28
推荐回答(3个)
回答1:

删除文件夹包括以下几种情况:

文件夹里的文件,文件夹里面的子文件夹(有文件),文件夹里面的子文件夹(空文件夹)。所以程序要针对这三种情况写。

import java.io.File;

public class Test {
public static void main(String args[]) {
Test t = new Test();
delFolder("c:/bb");
System.out.println("deleted");
}

// 删除文件夹
// param folderPath 文件夹完整绝对路径

public static void delFolder(String folderPath) {
try {
delAllFile(folderPath); // 删除完里面所有内容
String filePath = folderPath;
filePath = filePath.toString();
java.io.File myFilePath = new java.io.File(filePath);
myFilePath.delete(); // 删除空文件夹
} catch (Exception e) {
e.printStackTrace();
}
}

// 删除指定文件夹下所有文件
// param path 文件夹完整绝对路径
public static boolean delAllFile(String path) {
boolean flag = false;
File file = new File(path);
if (!file.exists()) {
return flag;
}
if (!file.isDirectory()) {
return flag;
}
String[] tempList = file.list();
File temp = null;
for (int i = 0; i < tempList.length; i++) {
if (path.endsWith(File.separator)) {
temp = new File(path + tempList[i]);
} else {
temp = new File(path + File.separator + tempList[i]);
}
if (temp.isFile()) {
temp.delete();
}
if (temp.isDirectory()) {
delAllFile(path + "/" + tempList[i]);// 先删除文件夹里面的文件
delFolder(path + "/" + tempList[i]);// 再删除空文件夹
flag = true;
}
}
return flag;
}
}

这应该全了,有清楚的可以继续提问,呵呵。

回答2:

递归程序如下:

import java.io.File;
public class DeleteFile {
public static void main(String[] args) {
//路径名自己要小心写哦,一次性就删除完了
String path="F:\\html";
File f=new File(path);
try {
deleteFile(f);
} catch (Exception e) {
e.printStackTrace();
System.exit(0);
}
System.out.println("==删除完成==");
}
public static void deleteFile(File f) throws Exception{
if(f.isFile()){
if(f.canWrite()){
f.delete();
}else{
throw new Exception("文件:"+f.getName()+"只读,无法删除,请手动删除");
}
}else{
File[] fs = f.listFiles();
if(fs.length!=0)
{
for(int i=0;i deleteFile(fs[i]);
}
}
f.delete();
}
}
}

回答3:

void deleteFiles(File file) {
File[] files=file.listFiles();
if (files==null || files.length==0) {
file.delete();
return;
}
for (File fil : files) {
deleteFiles(fil);
}
}