2011-01-28 28 views

Respuesta

13

Prueba esto:

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

Buena suerte!

+1

+1 'GetExtension' es la forma correcta, en lugar de verificar el nombre del archivo' EndsWith' ".jpg". –

6

Puede utilizar un objeto DirectoryInfo en el directorio, y hacer un GetFiles() en él con un filtro.

4

Utilizando el método de LINQ Where:

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

@ John-89 Gracias, no sabía de esta manera. – nan

+0

@ John-89: ¿Sabes por qué no se recomienda? O tiene un enlace a más información? Sólo curioso. –

+0

@ John-89: Hay un gran signo de "[citación necesitada]" flotando en mi cabeza en este caso. –

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)); 
} 

deben trabajar

Alex

0

Puede utilizar LINQ 'Dónde' cláusula para filtrar los archivos con la extensión no es necesario.

1

Puede usar simplemente una declaración LINQ para eliminar los JPG.

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

Em ... hay un archivo cuyo nombre es "abc.jpg" sin una extensión ... –

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

Siempre puede usar 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(); 
+1

Está buscando excluir ciertos archivos, por lo que necesitaría negar esa condición 'Contiene'. –

Cuestiones relacionadas