2012-03-28 26 views
8

Estoy usando Directory.GetFiles para obtener archivos de una carpeta en particular. Por defecto, los archivos de esa carpeta vienen ordenados por nombre de archivo, es decir. en orden alfabético de nombre de archivo. Quiero obtener archivos en el orden en que se modifican los archivos.Directory.GetFiles ordenar por fecha

No puedo usar Directory.GetInfo porque quiero obtener los archivos que contienen palabras clave particulares. Por favor, hágamelo saber cómo podemos obtener el archivo ordenado por su fecha de modificación. estoy usando el siguiente código

string[] arr1 = Directory.GetFiles("D:/TestFolder", "*"Test12"*"); 

Cualquier ayuda sería muy apreciada.

Respuesta

10

¿qué pasa con el siguiente

DirectoryInfo di = new DirectoryInfo("D:\\TestFolder"); 
FileSystemInfo[] files = di.GetFileSystemInfos(); 
var orderedFiles = files.Where(f=>f.Name.StartsWith("Test12")) 
         .OrderBy(f => f.CreationTime) 
         .ToList(); 

puede reemplazar f.Name.StartWith con cualquier función de cadena en contra de su necesidad (.Contains, etc)

puede reemplazar f => f.CreationTime con f.LastWriteTime para obtener la hora de modificación pero hay que tener en cuenta que a partir de Windows Vista, , el último tiempo de acceso no se actualiza por defecto. Esto es para mejorar el rendimiento del sistema de archivos

+0

Cómo escribir esto en VB files.OrderBy (f => f.CreationTime) –

5

si cambia al directorio de información que podría hacer

FileInfo[] files = new DirectoryInfo("path") 
         .GetFiles("filter") 
         .OrderBy(f => f.CreationTime) 
         .ToArray(); 

Editar:
sierra querías fecha de modificación, se puede hacer eso con f.LastWriteTime lugar

Cuestiones relacionadas