Почему утилита, предназначенная для управления файлами, работает в алфавитном порядке?

В изолированной среде я использую конвертер файлов.EML в .MSG ReliefJet Essentials, чтобы конвертировать большой репозиторий файлов (в сотни тысяч), сохраняя структуру каталогов без изменений - которая начинается с папок для каждой буквы и продолжается глубже оттуда.

Программное обеспечение для преобразования не выдает журнал каждого завершенного файла (к счастью), но ведет журнал ошибок всего, что не удается, что дает мне некоторое представление о маршруте, по которому он идет.

Меня смущает то, что я не беру папки в алфавитном порядке. Журнал ошибок сообщает, что папки были преобразованы в порядке:

D, N, P, C, I, S, M, G, T, V, B, O, E, Q, A, U, R, F, L

Даже подпапки, когда они появляются в этом списке, посещались не по порядку. Например, под B, папки были посещены (усечены для конфиденциальности):

BLA, BD, BRE, BAL, BRA, BEL, BLU

Я исправил некоторые проблемные файлы и снова запустил запрос на конвертацию, пропустив существующие файлы. Журнал возвращал любые ошибки в том же порядке, что заставляет меня думать, что это не "случайный выбор", а установленный порядок.

Что мне интересно, так это то, как достигается этот заказ. Похоже, он не зависит от размера папки или количества файлов, как с обоими значениями:

  • N меньше чем D
  • L примерно такого же размера, как D
  • P больше чем N, D а также L комбинированный

Существует ли какой-либо метод сортировки, который объясняет, почему утилита выбирает папки в этом не алфавитном порядке, который выглядит случайным, но воспроизводимым и воспроизводимым?

1 ответ

Вероятно, это порядок, в котором файлы и папки были найдены на диске.

Допустим, вы создаете папку на диске

  • Папка J

Затем, через некоторое время, вы создаете другую папку

  • Папка J
  • Папка Б

да Folder B в алфавитном порядке до J, но был создан после.

Список каталогов - это просто список вещей в каталоге, и гораздо проще добавить элементы в этот список, чем прочитать весь список, отсортировать его по произвольному алгоритму и затем записать список обратно на диск.,

С точки зрения добавления элементов в этот каталог было бы очень медленно добавлять элементы в этот каталог, если бы вы сортировали его каждый раз, фактически вы можете нанести вред машине, выполнив простой процесс добавления тонны нулевых байтовых файлов в каталог, даже если имя файла было последовательным, его придется проверять, сортируя их каждый раз.

Даже переименование файла в большом каталоге может быть мучительно медленным, так как это приведет к операции сортировки в папке.

Таким образом, вместо этого элемент просто добавляется в список каждый раз. Нет сортировки, нет ничего. Просто добавить и закрыть.

Если вы хотите отсортированный список, вы можете отсканировать каталог и отсортировать свой собственный список. За время существования этого каталога программы могли уже быстрее сортироваться, но эта проблема незначительна по сравнению с падением производительности, возникающим при каждом его записи или переименовании файла.

Так что вы, вероятно, видите, порядок, в котором каталоги или файлы были добавлены в ваш каталог вместо отсортированного списка.

Ваша программа не заботится о "управлении файлами". Все, что его волнует, - это содержимое этих файлов и проверка того, что он проходит через список.

Это случайно, но в то же время это повторяется, потому что это порядок, в котором имена записываются в список папок.

Это выглядит случайным, но на самом деле это не так.

Другие вопросы по тегам