Получить массив файлов с сортировкой по размеру без LINQ - C#
Формулировка задачи:
Нужно получить список файлов в директории. Файлы отсортированы по убыванию размера. LINQ пользоваться нельзя.
Пишу:
Как теперь отсортировать dicFiles по значению (value = размер файла), а потом преобразовать ключи dicFiles в изначальный массив Files?
Но мне нужно без LINQ.
string[] Files = new string[] { };
Files = Directory.GetFiles(Path, FileMask, SearchOption.AllDirectories);
Dictionary<string, long> dicFiles = new Dictionary<string, long>();
foreach (string file in Files)
{
FileInfo fi = new FileInfo(file);
var size = fi.Length;
try
{
dicFiles.Add(file, size);
}
catch { }
}
Я, конечно, понимаю, что с LINQ проще:
Directory.GetFiles(Path, FileMask, SearchOption.AllDirectories).Select(fn => new FileInfo(fn)).OrderBy(f => f.Length);
Задача: получить
массив
файлов, отсортированный по убыванию размера файлов.Решение задачи: «Получить массив файлов с сортировкой по размеру без LINQ»
textual
Листинг программы
public class FileLengthReverseComparer: IComparer<FileInfo>
{
public int Compare(FileInfo x, FileInfo y)
{
return y.Length.CompareTo(x.Length);
}
}
//......
var files = Directory.GetFiles(Path, FileMask, SearchOption.AllDirectories);
FileInfo[] fi= new FileInfo[files.Length];
foreach (int i=0; i<files.Length; i++)
{
fi[i] = new FileInfo(files[i]);
}
Array.Sort(fi, new FileLengthReverseComparer());