2013-04-05 243 views
0

在Windows窗體中使用c#我需要搜索包含訂單號3860457的文件的目錄"C:\XML\Outbound",並返回包含訂單號的文件的路徑,所以我然後可以打開文件並在RickTextBox中將內容顯示給用戶。c#搜索特定字符串的文本文件並獲取文件路徑

最終用戶將有訂單號,但不知道包含哪些文件定單號碼所以這就是爲什麼我要搜索所有文件,直到它找到filecontaining訂單號和返回路徑(例如"C:\XML\Outbound\some_file_name_123.txt"

我對c#有點新,所以我甚至不知道從哪裏開始。任何方向呢?

對不起,訂單號在文件內部,所以我需要搜索每個文件內容的訂單號,一旦找到包含訂單號的文件,就會返回該文件的路徑。訂單號不是文件名的一部分。

+2

是文件名或文件內容中的訂單號嗎? – 2013-04-05 20:25:27

+0

您想要在文件內搜索嗎?文件名包含訂單號,例如some_file_name_123.txt,是123的訂單號我建議您使用訂單號作爲文件名的一部分 – 2013-04-05 20:27:02

+1

檢查出[此問題](http://stackoverflow.com/questions/929276/how-to-recursively-list-all-the-files-in-a-directory-in-c)關於如何執行遞歸目錄搜索。列出目錄及其子文件夾中的所有文件,但它給出你可以通過[streamreader](http://msdn.microsoft.com/en-us/library/system.io.streamreader.aspx)來查看實際的文件,通常是人在SO上不會爲你編碼,所以這是一個很好的開始。 – tnw 2013-04-05 20:28:11

回答

4

直接的答案:

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;  
} 

不那麼直接的答案:

即使上述功能會給你一個給定的字符串(錯誤和邊緣情況的一些操作可能是不錯的)路徑它會非常慢,特別是如果你有很多文件。如果是這種情況,您需要告訴我們更多關於您的環境的信息,因爲您可能會犯錯誤(

相關問題