C# 需要建议,以改善文件内容搜索程序,我正在编写使用ASP.NET核心
我正在编写一个采用以下参数的控制台程序-C# 需要建议,以改善文件内容搜索程序,我正在编写使用ASP.NET核心,c#,asp.net,asp.net-core,io,console-application,C#,Asp.net,Asp.net Core,Io,Console Application,我正在编写一个采用以下参数的控制台程序- 目录路径 文件扩展名 “yyyy-mm-dd”格式的搜索日期 搜索文本 它搜索给定目录(param 1)中具有特定扩展名(param 2)的所有xml文件,其中包含修改日期(param 3)和文本(param 4) 目标目录目前大约有55000个xml文件 如何提高该计划的性能 对可能出现的问题有何评论 更新代码以反映Ashkan响应中的更改,而不是检查文件名上的日期与实际文件写入日期的比较。还添加了try-catch块 下面是我在ASP.NETCore
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);
}
试试看
{
var dirPath=args[0];
var fileExtension=args[1];
var searchDate=args[2];
var searchText=args[3];
DirectoryInfo dir=新的DirectoryInfo(dirPath);
IEnumerable filelist=dir.GetFiles(文件扩展名,SearchOption.AllDirectories)
.Where(file=>file.LastWriteTime.ToString(“yyyy-MM-dd”)==searchDate);
var foundFilesCtr=0;
WriteLine($“在{dir}中搜索{searchText}”);
Console.WriteLine(“---------------------------------------”;
控制台。WriteLine(“搜索结果…”);
WriteLine($“找到了{filelist.Count()}个文件,扩展名为{fileExtension},日期为{searchDate}”);
foreach(文件列表中的变量项)
if(File.ReadAllLines(item.FullName).Contains(searchText))
{
WriteLine($”文件,所选内容:{item.FullName});
foundFilesCtr++;
}
WriteLine($“找到了{foundFilesCtr}个文本为{searchText}的文件”;
Console.WriteLine(“---------------------------------------”;
}
捕获(例外情况除外)
{
Console.WriteLine(例如InnerException);
}
1.与其获取所有文件并对其进行筛选,不如仅获取具有给定扩展名的文件:
string[] filelist = Directory.GetFiles(fileExtension ,SearchOption.AllDirectories)
.Where(file => Path.GetFilenameWithoutExtension.Contains(searchDate).ToArray();
2.虽然文件是XML,但您将其视为字符串(xdoc.Document.ToString().Contains(searchText)
),因此只需将其作为字符串加载即可节省XML文档加载时间:
foreach(var file in files)
if(File.ReadAllText(file).Contains(searchText))
foundFilesCtr++;
异步循环如何异步循环?