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

如何使用C#判断目录中的项是文件还是文件夹?

C# 判断目录项是文件还是文件夹的正确写法

你原代码里的问题在于IsInstanceOfType的用法错误——这个方法需要传入对象实例,而非类型本身,所以不能直接传FileInfo或DirectoryInfo。下面是几种正确的实现方式:

方法一:使用模式匹配(推荐,C# 7.0+)

这是最简洁直观的写法,既能判断类型,又能直接获取强类型变量:

DirectoryInfo dirPrograms = new DirectoryInfo(folderPath);                     
foreach(var item in dirPrograms.EnumerateFileSystemInfos())
{
    if (item is FileInfo fileInfo)
    {
        // 处理文件逻辑,可直接使用fileInfo操作
        // 示例:Console.WriteLine($"找到文件:{fileInfo.FullName}");
    }
    else if (item is DirectoryInfo dirInfo)
    {
        // 处理文件夹逻辑,可直接使用dirInfo操作
        // 示例:Console.WriteLine($"找到文件夹:{dirInfo.FullName}");
    }
}

方法二:使用as关键字结合null判断

适合不需要模式匹配的场景,转换失败会返回null:

DirectoryInfo dirPrograms = new DirectoryInfo(folderPath);                     
foreach(var item in dirPrograms.EnumerateFileSystemInfos())
{
    FileInfo fileInfo = item as FileInfo;
    if (fileInfo != null)
    {
        // 处理文件
        continue;
    }

    DirectoryInfo dirInfo = item as DirectoryInfo;
    if (dirInfo != null)
    {
        // 处理文件夹
    }
}

方法三:直接比较类型(不推荐)

这种方式仅判断精确类型,若存在继承自FileInfo/DirectoryInfo的子类会判断失败,仅在确定无子类场景下使用:

DirectoryInfo dirPrograms = new DirectoryInfo(folderPath);                     
foreach(var item in dirPrograms.EnumerateFileSystemInfos())
{
    if (item.GetType() == typeof(FileInfo))
    {
        // 处理文件
    }
    else if (item.GetType() == typeof(DirectoryInfo))
    {
        // 处理文件夹
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:15:43