read - obtener ruta de carpeta c#
Cómo recuperar la lista de archivos en el directorio, ordenados por nombre (3)
Extendiendo lo que dijo @Thomas, si solo necesita los mejores archivos X, puede hacer esto:
int x = 10;
var files = Directory.EnumerateFiles(folder)
.OrderByDescending(filename => filename)
.Take(x);
Estoy tratando de obtener una lista de todos los archivos en una carpeta de C #. Suficientemente fácil:
Directory.GetFiles(folder)
Pero necesito el resultado ordenado alfabéticamente al revés, ya que todos son números y necesito saber el número más alto en el directorio . Por supuesto, podría agarrarlos en un objeto de matriz / lista y luego hacer una ordenación, pero me preguntaba si hay algún filtro / parámetro en su lugar.
Todos ellos son nombrados con ceros iniciales. Me gusta:
00000000001.log
00000000002.log
00000000003.log
00000000004.log
..
00000463245.log
00000853221.log
00024323767.log
¿Cuál es la forma más fácil? No necesito obtener los otros archivos, solo el número "más grande / más reciente".
var files = from file in Directory.GetFiles(folder)
orderby file descending
select file;
var biggest = files.First();
Si realmente está buscando el número más alto y esos archivos de registro se nombran como usted sugirió, ¿qué le parece?
Directory.GetFiles(folder).Length
var files = Directory.EnumerateFiles(folder)
.OrderByDescending(filename => filename);
(El método EnumerateFiles
es nuevo en .NET 4, aún puede usar GetFiles
si está usando una versión anterior)
EDIT: en realidad no necesita ordenar los nombres de los archivos, si usa el método MaxBy
definido en MoreLinq :
var lastFile = Directory.EnumerateFiles(folder).MaxBy(filename => filename);