You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用File.deleteRecursively()删除文件夹内容而非文件夹本身

仅删除文件夹内容保留文件夹本身的实现方法

核心思路是遍历目标文件夹(这里是Pictures)下的所有文件和子文件夹,逐个删除其中的内容及子文件夹本身,但跳过目标文件夹本身。以下是几种主流编程语言的实现方式:

Java 实现

import java.io.File;

public class ClearPicturesFolder {
    public static void main(String[] args) {
        File picturesFolder = new File("Pictures");
        
        // 先确认目标文件夹存在且是目录
        if (picturesFolder.exists() && picturesFolder.isDirectory()) {
            File[] folderContents = picturesFolder.listFiles();
            if (folderContents != null) {
                for (File content : folderContents) {
                    deleteItem(content);
                }
            }
        }
    }
    
    // 递归删除文件或文件夹
    private static void deleteItem(File item) {
        if (item.isDirectory()) {
            File[] children = item.listFiles();
            if (children != null) {
                for (File child : children) {
                    deleteItem(child);
                }
            }
        }
        item.delete();
    }
}

这段代码会遍历Pictures下的所有子项,先递归删除子文件夹里的所有内容,再删除子文件夹本身,最终只留下空的Pictures文件夹。

Kotlin 实现

Kotlin提供了更简洁的文件遍历API:

import java.io.File

fun main() {
    val picturesFolder = File("Pictures")
    if (picturesFolder.exists() && picturesFolder.isDirectory) {
        // 从最底层文件开始遍历,避免先删父文件夹导致的问题
        picturesFolder.walkBottomUp()
            .filter { it != picturesFolder } // 跳过目标文件夹本身
            .forEach { it.deleteRecursively() }
    }
}

walkBottomUp()会从最深层的文件/文件夹开始处理,确保子内容被彻底删除,最后过滤掉Pictures文件夹,只删除其内部所有内容。

Python 实现

方式一:使用os模块

import os
import shutil

def clear_folder(folder_path):
    if not os.path.isdir(folder_path):
        return
    # 遍历文件夹内所有项目
    for item_name in os.listdir(folder_path):
        item_path = os.path.join(folder_path, item_name)
        if os.path.isfile(item_path) or os.path.islink(item_path):
            os.unlink(item_path)  # 删除文件或链接
        elif os.path.isdir(item_path):
            shutil.rmtree(item_path)  # 递归删除子文件夹及其内容

# 调用方法清理Pictures文件夹
clear_folder("Pictures")

方式二:使用pathlib(Python 3.4+推荐)

from pathlib import Path
import shutil

pictures_folder = Path("Pictures")
if pictures_folder.is_dir():
    for item in pictures_folder.iterdir():
        if item.is_file() or item.is_symlink():
            item.unlink()
        elif item.is_dir():
            shutil.rmtree(item)

两种方式都能实现只删除Pictures内部的所有文件和子文件夹,保留空的Pictures文件夹。

内容的提问来源于stack exchange,提问作者Arik6

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 11:50:21