2011-01-28 130 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();