前段時間小編同事面試遇到了這個問題,由於同事比較菜並未很完美的完成這個問題,本文就替小編來解答一下。在C#中有多種方式類遍歷指定文件夾中的文件,本文將介紹三種方式。 一、使用Directory類的GetFiles方法: 示例代碼如下: string[] files = Directory.GetFi ...
前段時間小編同事面試遇到了這個問題,由於同事比較菜並未很完美的完成這個問題,本文就替小編來解答一下。在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開發跳槽”