c#搜索文本文件中的特定字符串并获取文件路径

c#搜索文本文件中的特定字符串并获取文件路径,c#,winforms,C#,Winforms,在Windows窗体中使用c#,我需要在目录“c:\XML\Outbound”中搜索包含订单号的文件3860457,并返回包含订单号的文件路径,这样我就可以打开文件并在文本框中向用户显示内容 最终用户将拥有订单号,但不知道哪个文件包含该订单号,因此我需要搜索所有文件,直到找到包含订单号的文件并返回路径(例如“C:\XML\Outbound\some\u file\u name\u 123.txt”) 我对c#有些陌生,所以我甚至不知道从哪里开始。有什么方向吗 抱歉,订单号在文件中,因此我需要搜索

在Windows窗体中使用c#,我需要在目录
“c:\XML\Outbound”
中搜索包含订单号的文件
3860457
,并返回包含订单号的文件路径,这样我就可以打开文件并在文本框中向用户显示内容

最终用户将拥有订单号,但不知道哪个文件包含该订单号,因此我需要搜索所有文件,直到找到包含订单号的文件并返回路径(例如
“C:\XML\Outbound\some\u file\u name\u 123.txt”

我对c#有些陌生,所以我甚至不知道从哪里开始。有什么方向吗

抱歉,订单号在文件中,因此我需要搜索每个文件内容中的订单号,找到包含订单号的文件后,返回该文件的路径。订单号不是文件名的一部分。

直接回答:

public string GetFileName(string search){ 
    List<string> paths = Directory.GetFiles(@"C:\XML\Outbond","*.txt",SearchOption.AllDirectories).ToList();
    string path = paths.FirstOrDefault(p=>File.ReadAllLines(p).Any(line=>line.IndexOf(search)>=0));
    return path;    
}
publicstringgetfilename(字符串搜索){
列表路径=Directory.GetFiles(@“C:\XML\Outbond”、“*.txt”、SearchOption.AllDirectories).ToList();
字符串path=path.FirstOrDefault(p=>File.ReadAllLines(p.Any)(line=>line.IndexOf(search)>=0));
返回路径;
}
不那么直截了当的回答:

即使上面的函数将为您提供给定字符串的路径(一些错误和边缘情况的处理可能会很好),它也会非常慢,尤其是当您有很多文件时。如果是这种情况,你需要告诉我们更多关于你的环境的信息,因为你很可能做错了(:

直接回答:

public string GetFileName(string search){ 
    List<string> paths = Directory.GetFiles(@"C:\XML\Outbond","*.txt",SearchOption.AllDirectories).ToList();
    string path = paths.FirstOrDefault(p=>File.ReadAllLines(p).Any(line=>line.IndexOf(search)>=0));
    return path;    
}
publicstringgetfilename(字符串搜索){
列表路径=Directory.GetFiles(@“C:\XML\Outbond”、“*.txt”、SearchOption.AllDirectories).ToList();
字符串path=path.FirstOrDefault(p=>File.ReadAllLines(p.Any)(line=>line.IndexOf(search)>=0));
返回路径;
}
不那么直截了当的回答:


即使上面的函数将为您提供给定字符串的路径(一些错误和边缘情况的处理可能会很好),它也会非常慢,尤其是当您有很多文件时。如果是这种情况,您需要告诉我们有关您的环境的更多信息,因为很可能您做得不对(:

是文件名或文件内容中的订单号?是否要在文件内搜索,或文件名包含订单号。例如,某些文件名是123,订单号是123。我建议您使用订单号。作为文件名的一部分,查看如何进行递归目录搜索。这将列出目录中的所有文件,并显示s子文件夹,但它为您提供了一个方法。接下来看一看如何读取实际文件。通常,SO上的人不会为您编写代码,因此这是一个很好的开始。简单的方法是生成一个将要读取的文件列表。读取每个文件,直到确定哪个文件包含有问题的订单号。放置将整个文件的内容输入RichTextBox。此过程的所有三个部分都有很好的文档记录。您需要付出更多努力才能真正帮助您。订单号是在文件名中还是在文件内容中?您想在文件内搜索,还是文件名包含订单号。例如,某个文件名是123订单号I r建议您使用订单号。作为文件名的一部分,查看如何进行递归目录搜索。这会列出目录及其子文件夹中的所有文件,但它会让您知道如何执行。接下来,请查看实际文件。通常,SO上的人不会为您编写代码,因此这是一个很好的开始。简单的方法是将生成要读取的文件列表。读取每个文件,直到确定哪个文件包含有问题的订单号。将整个文件的内容放入RichTextBox。此过程的所有三个部分都有很好的文档记录。您需要付出更多努力才能真正帮助您。