C#如何读取文件夹下所有CSV文件?新手开发者求助
嘿,刚入门编程能写出单个CSV文件读取的代码已经很不错啦!要实现读取文件夹里所有CSV文件其实很简单,我来帮你调整代码,顺便给你解释每一步的逻辑:
首先,你的现有代码是硬编码了单个文件路径,我们需要改成遍历指定文件夹下所有.csv后缀的文件,然后逐个调用你的GetDataTabletFromCSVFile方法处理。
修改后的完整代码
using System; using System.Data; using System.IO; class Program { static void Main(string[] args) { // 替换成你要读取的文件夹路径 string csvFolderPath = @"C:\Sample files"; // 先检查文件夹是否存在,避免路径错误导致崩溃 if (!Directory.Exists(csvFolderPath)) { Console.WriteLine("哎呀,指定的文件夹不存在哦,请检查路径是否正确!"); return; } // 获取文件夹下所有.csv文件: // 第三个参数用SearchOption.TopDirectoryOnly只读取当前文件夹;如果要包含子文件夹,换成SearchOption.AllDirectories string[] allCsvFiles = Directory.GetFiles(csvFolderPath, "*.csv", SearchOption.TopDirectoryOnly); if (allCsvFiles.Length == 0) { Console.WriteLine("文件夹里没找到任何.csv文件呢!"); return; } // 遍历每个CSV文件,逐个处理 foreach (string csvFilePath in allCsvFiles) { Console.WriteLine($"开始处理文件:{csvFilePath}"); try { DataTable csvData = GetDataTabletFromCSVFile(csvFilePath); // 这里可以添加你自己的处理逻辑,比如打印数据行数、写入数据库等 Console.WriteLine($"处理完成!这个文件一共有 {csvData.Rows.Count} 行数据"); } catch (Exception ex) { // 单个文件出错不影响其他文件处理,友好提示错误信息 Console.WriteLine($"处理文件 {csvFilePath} 时遇到问题:{ex.Message}"); } } Console.WriteLine("所有CSV文件都处理完啦!"); } // 假设你已经实现了这个读取单个CSV的方法(如果还没完善,下面有个简单示例) private static DataTable GetDataTabletFromCSVFile(string csv_file_path) { DataTable dt = new DataTable(); // 这里是基础的CSV读取逻辑,注意:如果你的CSV字段里包含逗号或引号,这个简单逻辑会出错 // 进阶的话可以用CsvHelper这类第三方库来处理复杂CSV格式 using (var reader = new StreamReader(csv_file_path)) { // 读取表头 string headerLine = reader.ReadLine(); if (!string.IsNullOrEmpty(headerLine)) { foreach (string columnName in headerLine.Split(',')) { dt.Columns.Add(columnName.Trim()); } // 读取每行数据 while (!reader.EndOfStream) { string dataLine = reader.ReadLine(); if (!string.IsNullOrEmpty(dataLine)) { dt.Rows.Add(dataLine.Split(',')); } } } } return dt; } }
关键步骤解释
- 指定文件夹路径:把原来的单个文件路径换成文件夹路径,先做存在性检查,避免程序崩溃
- 获取所有CSV文件:用
Directory.GetFiles方法,第二个参数"*.csv"是筛选后缀为.csv的文件,第三个参数控制是否读取子文件夹 - 遍历处理每个文件:用
foreach循环逐个读取,加上try-catch保证单个文件出错不会中断整个程序 - 处理CSV的小提醒:如果你的CSV文件里有带逗号、引号的字段(比如
"Smith, John"),上面的简单拆分逻辑会出错,新手可以试试NuGet上的CsvHelper库,它能轻松处理各种复杂CSV格式
内容的提问来源于stack exchange,提问作者user9470599
相关产品推荐
相关产品推荐

