前段時間小編同事面試遇到了這個問題,由于同事比較菜并未很完美的完成這個問題,本文就替小編來解答一下,在C#中有多種方式類遍歷指定檔案夾中的檔案,本文將介紹三種方式,
一、使用Directory類的GetFiles方法:
示例代碼如下:
string[] files = Directory.GetFiles(folderPath, "*.*", SearchOption.AllDirectories); foreach (string file in files){ // 處理每個檔案}
此方法簡單易用,一行代碼就可以完成遍歷,適用于小型檔案夾,但缺點是對于大型檔案夾,GetFiles方法會遍歷整個檔案夾并回傳一個包含所有檔案的陣列,可能導致性能問題,
二、使用DirectoryInfo類:
示例代碼如下:
DirectoryInfo folder = new DirectoryInfo(folderPath); foreach (FileInfo file in folder.GetFiles("*.*", SearchOption.AllDirectories)) { // 處理每個檔案 } //歡迎關注公眾號“DOTNET開發跳槽”,關注可獲得海量面試題
使用FileInfo物件來代表每個檔案,可以獲取更多檔案屬性,適用于大型檔案夾,缺點是相比GetFiles方法略顯冗長,不夠簡潔,
三、使用File類和Directory類的GetDirectories方法:
使用示例:
foreach (string directory in Directory.GetDirectories(folderPath, "*", SearchOption.AllDirectories)) { foreach (string file in Directory.GetFiles(directory)) { // 處理每個檔案 } }
這種方案是可以在遍歷子檔案夾時遍歷指定深度,適用于想要完全控制遍歷程度的情形,缺點是相比其他兩種方法較為復雜,需要嵌套回圈遍歷,
結語:
本文講述了C#遍歷指定檔案夾中所有檔案的3種方法,也替小編同事解決了疑問,以上三種遍歷檔案夾的方法各有優缺點,根據實際需求來選擇使用哪種方法,如果只是遍歷小型檔案夾,可以選擇GetFiles方法;如果需要遍歷大型檔案夾或獲取更多檔案屬性,應該選擇DirectoryInfo類;如果想要完全控制遍歷程度,應該使用GetDirectories方法,希望本文對你有所識訓,同時歡迎留言吐槽,
來源公眾號:“dotnet開發跳槽”
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/548305.html
標籤:.NET技术