如何在C#脚本中添加.csv文件支持以同时下载.xlsx和.csv文件
实现同时下载.xlsx和.csv格式文件的整合方案
需求背景
当前脚本仅支持下载.xlsx格式文件,需扩展功能实现同时下载.xlsx和.csv两种格式文件。此前尝试过单独处理.csv的代码,但希望将该功能整合到原有脚本结构中。
原有脚本结构
string extn = ".xlsx"; public void Main() { List<FileInfo> geFiles(string path, string extn, string BOT_StaggingFolder); }
尝试过的单独处理代码
string extn = ".xlsx"; public void Main() { // 我尝试过这段代码: var sourceDir = @"z:\sourcedir"; var destDir = @"R:\targetdir"; var pattern = "*.csv"; foreach (var file in new DirectoryInfo(sourceDir).GetFiles(pattern)) { file.CopyTo(Path.Combine(destDir, file.Name)); } }
整合后的解决方案
通过修改原有方法的参数和逻辑,实现批量处理两种格式文件:
// 定义需要处理的两种文件扩展名 List<string> targetExtensions = new List<string> { ".xlsx", ".csv" }; public void Main() { string sourceDir = @"z:\sourcedir"; string destDir = @"R:\targetdir"; // 调用修改后的方法处理两种格式文件 GetFiles(sourceDir, targetExtensions, destDir); } // 修改方法以支持多扩展名处理 List<FileInfo> GetFiles(string sourcePath, List<string> extensions, string targetFolder) { List<FileInfo> matchedFiles = new List<FileInfo>(); DirectoryInfo sourceDirInfo = new DirectoryInfo(sourcePath); // 确保目标文件夹存在,不存在则创建 if (!Directory.Exists(targetFolder)) { Directory.CreateDirectory(targetFolder); } // 遍历每个扩展名,获取对应文件并复制到目标路径 foreach (string ext in extensions) { foreach (FileInfo file in sourceDirInfo.GetFiles($"*{ext}", SearchOption.TopDirectoryOnly)) { string destFilePath = Path.Combine(targetFolder, file.Name); // 如需覆盖已存在文件,将CopyTo的第二个参数设为true:file.CopyTo(destFilePath, true) file.CopyTo(destFilePath); matchedFiles.Add(file); } } return matchedFiles; }
关键修改说明
- 将原来的单个扩展名变量改为
List<string>类型,同时包含.xlsx和.csv - 修改
GetFiles方法的参数为扩展名列表,实现批量遍历处理 - 新增目标文件夹自动创建逻辑,避免因文件夹不存在导致的报错
- 保留了返回匹配文件列表的原有功能,同时完成文件复制操作
内容的提问来源于stack exchange,提问作者user1231
相关产品推荐
相关产品推荐

