在文件路径中使用通配符搜索 c#

Use wildcard search in file path c#

我正在尝试使用通配符搜索在我的桌面上搜索任何以单词 test.

结尾的内容

我有这个 (ExcelToDataTable) 接受一个 string 作为参数:

ExcelToDataTable(@"C:\Users\name\Desktop\*test.xls");

然后我用我的方法对我试图从 sheet 中提取的数据执行一些操作,该 sheet 名为 test:

public static DataTable ExcelToDataTable(string filePath)
{
     DataTable dt = new DataTable();
     using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
     {

     }
 }

所以我的问题是,对于我提供的示例,有没有办法使用通配符并将其输入到我的 ExcelToDataTable 方法中?我想在我的桌面上找到每个末尾有单词 test 的 .xls 文件...

谢谢

我会创建一个新方法,"one level up" 接受目录路径,找到其中的所有 xls 文件,并将它们传递给列表中的方法。

 public static List<DataTable> ProcessDataTables(string dirPath)
    {
               xlsFiles = System.IO.Directory.GetFiles(dirPath, "*test.xls")
               var results = new List<DataTable>
               foreach(var file in xlsFiles) 
                     results.Append(ExcelToDataTable(file))
               return results
    }

你应该考虑在那里进行一些健全性检查(比如检查 dirPath 实际上是一个存在的目录的路径,任何调用它的东西都可以用一个空列表作为 return不存在 xls 文件时的值等。)

一般来说,使用 Environment.SpecialFolder.Desktop 而不是硬编码 "your" 桌面也是最佳做法。

您可以执行以下操作,例如,假设我想查找以 .jpg and .txt 结尾的文件,我可以执行以下操作

var fi = new System.IO.DirectoryInfo(sDir).GetFiles().
     Where(f => !(f.FullName.EndsWith(".jpg") || f.Name.EndsWith(".txt"))).ToArray();

在您的情况下,如果您要查找以 .text 扩展名结尾的文件,请执行以下操作

var fi = new System.IO.DirectoryInfo(sDir).GetFiles().
    Where(f => !(f.FullName.EndsWith(".text") || f.Name.EndsWith(".Text"))).ToArray();

您还可以Google搜索以下C# Linq Directory.EnumerateFiles()方法