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

如何用C#将文件夹文件导出至CSV并区分JPG、PDF及其他类型

C# 导出文件夹文件信息到CSV并标注文件类型

当然有简便的实现方式,核心是结合.NET的文件操作API和CSV格式规则来完成,以下是完整的解决方案:

核心思路

  • 遍历目标文件夹(可选递归子文件夹)获取所有文件
  • 通过扩展名判断文件类型(JPG/PDF/其他)
  • 处理CSV格式的特殊字符(比如文件名含逗号的情况)
  • 将收集到的文件信息写入CSV文件

完整代码示例

using System;
using System.IO;
using System.Linq;

class FileInfoExporter
{
    static void Main(string[] args)
    {
        // 配置参数
        string targetFolder = @"C:\Your\Target\Directory";
        string outputCsv = @"C:\Your\Output\FileInfo.csv";
        bool includeSubfolders = true;

        // 初始化CSV表头
        var csvContent = new[] { "文件名,文件路径,大小(字节),创建时间,文件类型" };

        // 遍历文件并收集信息
        var files = Directory.EnumerateFiles(targetFolder, "*.*", 
                    includeSubfolders ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly)
                    .Select(path => new FileInfo(path));

        foreach (var file in files)
        {
            // 判定文件类型
            string fileType = file.Extension.ToLowerInvariant() switch
            {
                ".jpg" or ".jpeg" => "JPG",
                ".pdf" => "PDF",
                _ => "其他"
            };

            // 转义CSV字段,避免格式错误
            string safeFileName = EscapeCsvField(file.Name);
            string safeFilePath = EscapeCsvField(file.FullName);

            // 拼接行数据
            string line = $"{safeFileName},{safeFilePath},{file.Length},{file.CreationTime:yyyy-MM-dd HH:mm:ss},{fileType}";
            csvContent = csvContent.Append(line).ToArray();
        }

        // 写入CSV文件
        File.WriteAllLines(outputCsv, csvContent);
        Console.WriteLine($"导出完成,文件路径:{outputCsv}");
    }

    /// <summary>
    /// 处理CSV字段中的特殊字符
    /// </summary>
    private static string EscapeCsvField(string field)
    {
        if (field.Contains(',') || field.Contains('"'))
        {
            return $"\"{field.Replace("\"", "\"\"")}\"";
        }
        return field;
    }
}

关键细节说明

  1. 文件遍历:使用Directory.EnumerateFiles而非GetFiles,前者是延迟加载,处理大量文件时内存占用更低
  2. 类型判断:用ToLowerInvariant避免大小写问题,同时支持.jpg和.jpeg两种扩展名
  3. CSV格式兼容:EscapeCsvField方法处理含逗号、引号的字段,符合CSV规范
  4. 可配置项:通过includeSubfolders开关控制是否遍历子文件夹,时间格式统一为yyyy-MM-dd HH:mm:ss便于读取

注意事项

  • 替换代码中的targetFolder和outputCsv为实际路径
  • 确保程序拥有目标文件夹的读取权限和输出路径的写入权限
  • 如果需要扩展更多文件类型,直接在switch表达式中添加对应的扩展名即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 21:55:30