Почему утилита, предназначенная для управления файлами, работает в алфавитном порядке?
В изолированной среде я использую конвертер файлов.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, но был создан после.
Список каталогов - это просто список вещей в каталоге, и гораздо проще добавить элементы в этот список, чем прочитать весь список, отсортировать его по произвольному алгоритму и затем записать список обратно на диск.,
С точки зрения добавления элементов в этот каталог было бы очень медленно добавлять элементы в этот каталог, если бы вы сортировали его каждый раз, фактически вы можете нанести вред машине, выполнив простой процесс добавления тонны нулевых байтовых файлов в каталог, даже если имя файла было последовательным, его придется проверять, сортируя их каждый раз.
Даже переименование файла в большом каталоге может быть мучительно медленным, так как это приведет к операции сортировки в папке.
Таким образом, вместо этого элемент просто добавляется в список каждый раз. Нет сортировки, нет ничего. Просто добавить и закрыть.
Если вы хотите отсортированный список, вы можете отсканировать каталог и отсортировать свой собственный список. За время существования этого каталога программы могли уже быстрее сортироваться, но эта проблема незначительна по сравнению с падением производительности, возникающим при каждом его записи или переименовании файла.
Так что вы, вероятно, видите, порядок, в котором каталоги или файлы были добавлены в ваш каталог вместо отсортированного списка.
Ваша программа не заботится о "управлении файлами". Все, что его волнует, - это содержимое этих файлов и проверка того, что он проходит через список.
Это случайно, но в то же время это повторяется, потому что это порядок, в котором имена записываются в список папок.
Это выглядит случайным, но на самом деле это не так.