2011-11-02 31 views
2

我正在編寫一個程序來搜索某個目錄內的文件,但似乎有一些滯後問題。我正在搜索的文件夾有500個文件和大約1000個保存這些文件的文件夾。 文件夾內可能有一個文件夾(THE 2nd LEVEL)。在c中搜索文件的更好的方法#

我正在使用以下幾行來抓取所有文件。

string location = "C:\\Documents and Settings\\All Users\\Documents\\PDFS"; 
    string[] PDFS = Directory.GetFiles(@location, "*pdf", SearchOption.AllDirectories); 

我目前的設置是MS Visual C#2010 Express。

+0

你是否嘗試去多線程? Parallel.For(...) 磁盤只有一個,這可以是一個非優化,但嘗試值得付出。 –

回答

8

您可以使用Directory.EnumerateFiles()代替使用惰性評估,因此只有在迭代結果時纔會將文件帶入內存。

+1

+1。請注意,這假設GetFiles是您的程序的實際性能問題(可能,但您應該始終測量以確認性能問題)。 –

+0

另外它應該注意的是*相同的總體工作*仍然需要完成(加上更多的開銷) - 它不像GetFiles()那樣是前加載的,而是隨着時間的推移而迭代。 – BrokenGlass