Ordenar el resultado de Directory.GetFiles en C#
sorting (3)
Muy fácil con LINQ.
Para ordenar por nombre,
var sorted = Directory.GetFiles(".").OrderBy(f => f);
Para ordenar por tamaño,
var sorted = Directory.GetFiles(".").OrderBy(f => new FileInfo(f).Length);
Tengo este código para listar todos los archivos en un directorio.
class GetTypesProfiler
{
static List<Data> Test()
{
List<Data> dataList = new List<Data>();
string folder = @"DIRECTORY";
Console.Write("------------------------------------------/n");
var files = Directory.GetFiles(folder, "*.dll");
Stopwatch sw;
foreach (var file in files)
{
string fileName = Path.GetFileName(file);
var fileinfo = new FileInfo(file);
long fileSize = fileinfo.Length;
Console.WriteLine("{0}/{1}", fileName, fileSize);
}
return dataList;
}
static void Main()
{
...
}
}
Necesito imprimir la información del archivo según el tamaño del archivo o el orden alfabético. ¿Cómo puedo ordenar el resultado de Directory.GetFiles ()?
Para ordenar por fecha: (devuelve un enumerable de FileInfo):
Directory.GetFiles(folder, "*.dll").Select(fn => new FileInfo(fn)).
OrderBy(f => f.Length);
o, para ordenar por nombre:
Directory.GetFiles(folder, "*.dll").Select(fn => new FileInfo(fn)).
OrderBy(f => f.Name);
Crear instancias de FileInfo
no es necesario para ordenar por nombre de archivo, pero si desea aplicar diferentes métodos de clasificación sobre la marcha, es mejor tener su matriz de objetos FileInfo
en su lugar y luego simplemente OrderBy
por propiedad de Length
o Name
, por lo tanto, esta implementación . Además, parece que va a crear FileInfo
todos modos, por lo que es mejor tener una colección de objetos FileInfo
cualquier caso.
Lo siento, no lo entendí bien la primera vez, debería haber leído la pregunta y los documentos más detenidamente.
Puede usar LINQ si lo desea, en un objeto FileInfo:
var orderedFiles = Directory.GetFiles("").Select(f=> new FileInfo(f)).OrderBy(f=> f.CreationTime)