需要建议来改进我正在使用 ASP.NET Core 编写的文件内容搜索程序

Need recommendation to improve the file content search program I am writing using ASP.NET Core

我正在编写一个带有以下参数的控制台程序-

  1. 目录路径
  2. 文件扩展名
  3. "yyyy-mm-dd" 格式的搜索日期
  4. 搜索文本

它搜索给定目录(参数 1)中具有特定扩展名(参数 2)的所有 xml 文件,修改日期(参数 3),包含文本(参数 4)。

目标目录目前有大约 55000 xml 个文件。

我怎样才能提高这个程序的性能?

对可能出错的地方有什么意见吗?

更新代码 以反映每个 Ashkan 响应的变化,而不是检查文件名上的日期我正在与实际文件写入日期进行比较。还添加了 try catch 块。

以下是我在ASP.NETCore 2.2

中编写的程序
try
{
    var dirPath = args[0];
    var fileExtension = args[1];
    var searchDate = args[2];
    var searchText = args[3];

    DirectoryInfo dir = new DirectoryInfo(dirPath);

    IEnumerable<FileInfo> filelist = dir.GetFiles(fileExtension, SearchOption.AllDirectories)
                                        .Where(file => file.LastWriteTime.ToString("yyyy-MM-dd") == searchDate);

    var foundFilesCtr = 0;

    Console.WriteLine($"Searching for {searchText} in {dir}");
    Console.WriteLine("------------------------------------");
    Console.WriteLine("Search results...");
    Console.WriteLine($"Found {filelist.Count()} files with extenstion {fileExtension} and dated {searchDate}");

    foreach (var item in filelist)
        if (File.ReadAllLines(item.FullName).Contains(searchText))
        {
            Console.WriteLine($"File with selected content: {item.FullName}");
            foundFilesCtr++;
        }

    Console.WriteLine($"Found {foundFilesCtr} files with text {searchText}");
    Console.WriteLine("------------------------------------");
}
catch(Exception ex)
{
    Console.WriteLine(ex.InnerException);
}

1.Instead 获取所有文件并过滤它们只获取具有给定扩展名的文件:

string[] filelist = Directory.GetFiles(fileExtension ,SearchOption.AllDirectories)
           .Where(file => Path.GetFilenameWithoutExtension.Contains(searchDate).ToArray();

2.Although 文件是 XML,但您将它们视为字符串 (xdoc.Document.ToString().Contains(searchText)),因此只需将它们作为字符串加载并节省 XML 的时间文档加载时间:

foreach(var file in files)
    if(File.ReadAllText(file).Contains(searchText))
        foundFilesCtr++;