在System.IO.Directory.GetFiles()中排除文件扩展名

时间:2011-01-28 19:42:03

标签: c# asp.net .net

有没有办法在文件夹中获取文件数,但我想排除扩展名为jpg的文件?

Directory.GetFiles("c:\\Temp\\").Count();

9 个答案:

答案 0 :(得分:13)

试试这个:

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

答案 1 :(得分:6)

您可以在目录上使用DirectoryInfo对象,并使用过滤器对其进行GetFiles()

答案 2 :(得分:5)

使用Linq的Where方法:

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

答案 3 :(得分: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));
}

应该工作

亚历

答案 4 :(得分:1)

您可以使用简单的LINQ语句来清除JPG。

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

答案 5 :(得分: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();

答案 6 :(得分:0)

您可以使用LINQ'Fhere'子句来过滤掉不需要扩展名的文件。

答案 7 :(得分:0)

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

答案 8 :(得分:0)

您可以随时使用LINQ。

return GetFiles("c:\\Temp\\").Where(str => !str.EndsWith(".exe")).Count();