Получить массив файлов с сортировкой по размеру без LINQ - C#

Узнай цену своей работы

Формулировка задачи:

Нужно получить список файлов в директории. Файлы отсортированы по убыванию размера. 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 { }
            }
Как теперь отсортировать dicFiles по значению (value = размер файла), а потом преобразовать ключи dicFiles в изначальный массив Files?
Я, конечно, понимаю, что с LINQ проще:
Directory.GetFiles(Path, FileMask, SearchOption.AllDirectories).Select(fn => new FileInfo(fn)).OrderBy(f => f.Length);
Но мне нужно без LINQ.
Задача: получить

массив

файлов, отсортированный по убыванию размера файлов.

Решение задачи: «Получить массив файлов с сортировкой по размеру без 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());

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5
Похожие ответы