2014年7月10日 星期四

使用 DirectoryInfo().Getfiles("*.xls") 會將 *.xlsx 列出來 ???


今天有朋友問我一個問題,使用 DirectoryInfo().Getfiles("*.xls") ,該目錄中若有檔案為 *.xlsx ,則連 *.xlsx 都會一起 list 出來

寫法如下,一般都是這樣子寫,看起來沒什麼異狀...
DirectoryInfo di = new DirectoryInfo(@"d:\temp");
            FileInfo[] files = di.GetFiles("*.xls");
            foreach (FileInfo fi in files)
            {
                string sfullname =  fi.FullName;
            }

後來改為以下的寫法,用 Where 下檔名的條件就可以解決了...

List<string> sfiles = Directory.GetFiles(@"d:\temp", "*.*").Where(file => file.ToLower().EndsWith("xls")).ToList();
            foreach (string file in sfiles)
            {
                FileInfo fi = new FileInfo(file);
                //(.....)
            }

舉一反三,若要取得二個以上的副檔名檔案列表呢? Where 條件中加個 || (OR) 條件就好了

List<string> sfiles = Directory.GetFiles(@"d:\temp", "*.*").Where(file => file.ToLower().EndsWith("xls")  || file.ToLower().EndsWith("html") ).ToList();


沒有留言:

張貼留言