Java 删除文件夹下所有文件的方法
在Java中,要删除文件夹下的所有文件(包括子文件夹),可以使用以下几种方法:

递归删除
import java.io.File;
public class DeleteFiles {
public static void deleteFiles(File folder) {
if (folder.isDirectory()) {
File[] files = folder.listFiles();
if (files != null) { // 有些系统可能返回null
for (File file : files) {
deleteFiles(file);
}
}
}
folder.delete(); // 删除文件或空目录
}
public static void main(String[] args) {
File folder = new File("path/to/your/folder");
deleteFiles(folder);
}
}
使用Java NIO (Java 7+)
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
public class DeleteFilesNIO {
public static void deleteFiles(String folderPath) throws IOException {
Path directory = Paths.get(folderPath);
Files.walkFileTree(directory, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
Files.delete(file); // 删除文件
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
Files.delete(dir); // 删除目录
return FileVisitResult.CONTINUE;
}
});
}
public static void main(String[] args) {
try {
deleteFiles("path/to/your/folder");
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用Apache Commons IO库
如果你使用Apache Commons IO库,可以更简单地实现:
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class DeleteFilesCommonsIO {
public static void main(String[] args) {
try {
FileUtils.deleteDirectory(new File("path/to/your/folder"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
注意事项
- 删除操作是不可逆的,请确保你真的要删除这些文件
- 程序需要有足够的权限来删除这些文件
- 对于大型目录结构,递归方法可能会导致栈溢出,NIO方法更安全
- 在删除前最好先检查路径是否存在:
if (folder.exists())
选择哪种方法取决于你的具体需求和项目环境,NIO方法是Java 7+的推荐方式,而Apache Commons IO提供了更简洁的API。

