如何使用C#控制台应用程序获取文件夹下仅含扩展名的Excel文件名
解决方案
方案1:使用Path.GetFileName方法(推荐,最简实现)
System.IO.Path 类内置的 GetFileName 方法可以直接从完整文件路径中提取出带扩展名的文件名,只需对你原有代码做少量修改即可:
using System.IO; public static void getExcelFileName() { string[] fileFullPaths = Directory.GetFiles(@"C:\Users\Ashok Kumar\OneDrive\Desktop\Ashok\MarketPrice\NSE\Futures\Live", "*.csv"); foreach (var fullPath in fileFullPaths) { // 提取带扩展名的文件名 string fileName = Path.GetFileName(fullPath); Console.WriteLine(fileName); } }
运行后输出的就是 2021070701.CSV 这类你需要的格式。
方案2:使用FileInfo类的Name属性(你尝试过的方案的正确写法)
你之前用FileInfo没有得到想要的结果,是因为没有调用它的Name属性,正确实现如下:
using System.IO; public static void getExcelFileName() { DirectoryInfo targetDir = new DirectoryInfo(@"C:\Users\Ashok Kumar\OneDrive\Desktop\Ashok\MarketPrice\NSE\Futures\Live"); FileInfo[] csvFiles = targetDir.GetFiles("*.csv"); foreach (var file in csvFiles) { // Name属性即为带扩展名的文件名 Console.WriteLine(file.Name); // 如果后续需要用到完整路径,可调用file.FullName } }
可选拓展:严格匹配扩展名大小写
Windows系统下GetFiles的*.csv筛选默认不区分大小写,如果需要只返回后缀为大写.CSV的文件,可以额外加一层过滤:
var csvFiles = Directory.GetFiles(@"你的目标路径", "*.csv") .Where(f => Path.GetExtension(f).Equals(".CSV", StringComparison.Ordinal));
内容的提问来源于stack exchange,提问作者Ashok
相关产品推荐
相关产品推荐

