Получить массив файлов с сортировкой по размеру без 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());
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д