¿Hay alguna forma de obtener un conteo de archivos en una carpeta, pero quiero excluir los archivos con la extensión jpg?Excluir una extensión de archivo en System.IO.Directory.GetFiles()
Directory.GetFiles("c:\\Temp\\").Count();
¿Hay alguna forma de obtener un conteo de archivos en una carpeta, pero quiero excluir los archivos con la extensión jpg?Excluir una extensión de archivo en System.IO.Directory.GetFiles()
Directory.GetFiles("c:\\Temp\\").Count();
Prueba esto:
var count = System.IO.Directory.GetFiles(@"c:\\Temp\\")
.Count(p => Path.GetExtension(p) != ".jpg");
Buena suerte!
+1 'GetExtension' es la forma correcta, en lugar de verificar el nombre del archivo' EndsWith' ".jpg". –
Puede utilizar un objeto DirectoryInfo
en el directorio, y hacer un GetFiles()
en él con un filtro.
Utilizando el método de LINQ Where
:
Directory.GetFiles(path).Where(file => !file.EndsWith(".jpg")).Count();
@ John-89 Gracias, no sabía de esta manera. – nan
@ John-89: ¿Sabes por qué no se recomienda? O tiene un enlace a más información? Sólo curioso. –
@ John-89: Hay un gran signo de "[citación necesitada]" flotando en mi cabeza en este caso. –
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
Puede utilizar LINQ 'Dónde' cláusula para filtrar los archivos con la extensión no es necesario.
Puede usar simplemente una declaración LINQ para eliminar los JPG.
Directory.GetFiles("C:\\temp\\").Where(f => !f.ToLower().EndsWith(".jpg")).Count();
Em ... hay un archivo cuyo nombre es "abc.jpg" sin una extensión ... –
System.IO.Directory.GetFiles("c:\\Temp\\").Where(f => !f.EndsWith(".jpg")).Count();
Siempre puede usar LINQ.
return GetFiles("c:\\Temp\\").Where(str => !str.EndsWith(".exe")).Count();
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();
Está buscando excluir ciertos archivos, por lo que necesitaría negar esa condición 'Contiene'. –
¿Quieres excluir simplemente que la extensión o todos los archivos JPEG (* .jpg, * .jpeg, * .jpe)? – adrianbanks
solo esa extensión en particular (.jpg) – jinsungy