2011-01-28 132 views

回答

13

試試這個:

var count = System.IO.Directory.GetFiles(@"c:\\Temp\\") 
           .Count(p => Path.GetExtension(p) != ".jpg"); 

祝你好運!

6

您可以在目錄中使用DirectoryInfo對象,並在其上做了GetFiles()與過濾器。

4

使用LINQ的Where方法:

Directory.GetFiles(path).Where(file => !file.EndsWith(".jpg")).Count(); 
+0

@ John-89謝謝,不知道這種方式。 – nan 2011-01-28 19:57:46

+0

@ John-89:你知道爲什麼不推薦?或者有更多信息的鏈接?只是好奇。 – 2011-01-28 20:15:30

+0

@約翰 - 89:這張照片上有一個很大的'[引用需要]'的標誌。 – 2011-01-28 20:22:35

1
public static string[] MultipleFileFilter(ref string dir) 
{ 
    //determine our valid file extensions 
    string validExtensions = "*.jpg,*.jpeg,*.gif,*.png"; 

    //create a string array of our filters by plitting the 
    //string of valid filters on the delimiter 
    string[] extFilter = validExtensions.Split(new char[] { ',' }); 

    //ArrayList to hold the files with the certain extensions 
    ArrayList files = new ArrayList(); 

    //DirectoryInfo instance to be used to get the files 
    DirectoryInfo dirInfo = new DirectoryInfo(dir); 

    //loop through each extension in the filter 
    foreach (string extension in extFilter) 
    { 
     //add all the files that match our valid extensions 
     //by using AddRange of the ArrayList 
     files.AddRange(dirInfo.GetFiles(extension)); 
    } 

    //convert the ArrayList to a string array 
    //of file names 
    return (string[])files.ToArray(typeof(string)); 
} 

應工作

亞歷

0

您可以使用LINQ '去哪兒' 條款,以過濾掉不需要的擴展名的文件。

1

您可以使用簡單的LINQ語句來清除JPG。

Directory.GetFiles("C:\\temp\\").Where(f => !f.ToLower().EndsWith(".jpg")).Count(); 
0
System.IO.Directory.GetFiles("c:\\Temp\\").Where(f => !f.EndsWith(".jpg")).Count(); 
0

您可以隨時使用LINQ。

return GetFiles("c:\\Temp\\").Where(str => !str.EndsWith(".exe")).Count(); 
1
string[] extensions = new string[] { ".jpg", ".gif" }; 

var files = from file in Directory.GetFiles(@"C:\TEMP\") 
      where extensions.Contains((new FileInfo(file)).Extension) 
      select file; 

files.Count();