.Net Get All files under the directory Improved version—使用.Net找出 資料夾/文件夾入所有檔案改進版

很久之前寫過一個網誌是介紹如何找出 資料夾/文件夾入所有檔案

VB.Net Get All files under the directory —使用VB.Net找出 資料夾/文件夾入所有檔案

之前是用一個叫Recursion 的方法來取得資料夾裡面的資料夾內的檔案…
最近另外一個Project上又要做一個差不多的功能
令使用者可以看到資料夾入有什麼檔案可以下載
回看返之前的Blog 這個功能應該不用寫到那麼複雜的
還有這個function的效能其實也不太好

所以便去做一下research看看有沒有更好的解決方法了

解決方法:
原來我做可以使用DirectoryInfo中的GetFiles 方法
我們還可以設定一些變數去選擇要找出資料夾入..那一類型的檔案等等

E.G.
使用DirectoryInfoGetFiles功能
DirectoryInfo dirInfo = new DirectoryInfo(“資料夾路徑”);
第一個變數是Filter File Extension “*.*” 是選擇所有檔案 而 “*.txt”則是只選擇 .txt
List FileInfoList = dirInfo.GetFiles(Extension Filter, SearchOption).ToList();
C#


// Initialise DirectoryInfo 設定將要找出檔案的資料夾
            DirectoryInfo dirInfo = new DirectoryInfo(txt_Folder.Text.Trim());

            // 使用DirectoryInfo 的GetFiles功能
            // 第一個變數是Filter File Extension "*.*" 是選擇所有檔案 而 "*.txt"則是只選擇 .txt
            // 第二個變數是SearchOption 有 AllDirectories 和 TopDirectoryOnly 2個選擇,
            // 我們想找出資料夾入所有的檔案..包括資料夾內的資料夾所以我們會用到AllDirectories
            List<FileInfo> fileInfoList = dirInfo.GetFiles("*.*", SearchOption.AllDirectories).ToList();

            // 如果你只需要檔案名稱的話可以使用Directory Instead of Directory List.. 他會
            // List<String> fileInfoList = Directory.GetFiles(txt_Folder.Text.Trim(), "*.*", SearchOption.AllDirectories).ToList();

            dgv_FileList.DataSource = fileInfoList;

Hope you find it useful

Leave a Reply