jueves, 21 de enero de 2016

47. GetFiles Vs EnumerateFiles (Ayuda rápida X)

Obtener los archivos de un directorio se puede considerar un tema muy sencillo sin embargo puede convertirse en un dolor de cabeza, sobre todo cuando la cantidad de archivos que se encuentran en una unidad es demasiado grande.

Cuando manejamos grandes cantidades de archivos, no solo es responsabilidad de nosotros como desarrolladores su manejo, dependemos de varios factores como son velocidad de los discos, el formato de los mismos y el sistema operativo.

Ahora buen tenemos 2 formas de determinar el contenido de un directorio:

string[] dirs = Directory.GetFiles(@"c:\", "c*");

que nos permite obtener un arreglo de cadenas con las ubicaciones en las que se encuentra un archivo especifico, esta función también nos permite usar un patrón de búsqueda

string[] dirs = Directory.GetFiles([RUTA], [PATRON]);

sin embargo esta función solo se recomienda cuando el numero de archivos es relativamente pequeño, por que muestra un resultado hasta después de que ha leído todos los archivos del disco, en mi caso personal me ha funcionado hasta 1 000 000 de archivos con un formato NTFS.

Ademas existe otra funcion para consultar el contenido de un directorio EnumerateFiles, esta es muy parecida a GetFiles

var txtFiles = Directory.EnumerateFiles(sourceDirectory);

sin embargo esta es asíncrona, podemos trabajar con ella aun cuando no tengamos todos los archivos, si bien en un conteo es mejor GetFiles, si debemos hacer algún procesamiento a cada uno de los archivos que encontremos EnumerateFiles(sourceDirectory) nos permite trabajar con los archivos conforme el sistema operativo los va descubriendo en el disco

foreach (string currentFile in Directory.EnumerateFiles(sourceDirectory))
{
string fileName = currentFile.Substring(sourceDirectory.Length + 1);
        Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
}

Hasta la proxima

No hay comentarios.:

Publicar un comentario