Формат файлов FileList (*.flist)
Версия №2. В процессе проектирования.
Более старые версии:
- 1.
Назначение формата - хранение списка файлов с абсолютными или относительными путями + при необходимости их чексум по определенному алгоритму. Сюда-же записывается информация о принадлежности файла к некоей определенной группе - это может быть использовано для хранения в одном списке информации о файлах с одинаковыми именами и расположением, но физически и по содержанию - разных. Например для языковых пакетов.
Формат представляет из себя гибрид *.ini-файла с нестандартной секцией [files] - содержимое секции читается по строкам и содержит пути к файлам и их чексуммы.
Внутри есть секции:
- [Main]
- [Files]
[Main]
Внутри есть параметры:
- FormatName (string) - имя формата.
- FormatVersion (integer) - версия формата.
- PathsAreAbsolute (bool) - используются ли абсолютные пути. Если false - то используются пути относительно места где лежит данный *.flist
- AddSize (bool) - добавлять ли инфу о размере файла.
- AddCRC32 (bool) - добавлять ли crc32 файла.
- FilesNum (integer) - количество файлов в списке.
- UseGroups (bool) - используются ли группы файлов. По умолчанию false.
- UsedGroups (string) - имена всех используемых групп файлов, через запятую, по умолчанию пустая строка, но вообще это значение используется для оптимизации и исключения необходимости парсеру каждый раз при открытии нового списка просматривать весь список файлов для получения списка всех групп - поэтому реализация обязана поддерживать актуальность информации в данном параметре после любого изменения собственно списка файлов.
[Files]
Нестандартная для обычного ini секция. Внутри список файлов - по 1 строке на каждый файл. Строка вида: Parameter1 : Value1; Parameter2 : Value2; ... ; ParameterN : ValueN
Обязательные параметры:
- File - путь к файлу или папке.
- Type - тип - файл или папка - значение либо File либо Dir.
Также возможны параметры:
- Size с числовым значением в байтах - размер;
- CRC32 со значением чексуммы.
- Group с текстовым значением - именем группы файла. Если [Main]->UseGroups == true то этот параметр обязателен. Если файл не принадлежит явно какой-либо группе - то устанавливается значение "all" (без кавычек, ессно) - например при чтении списка в формате более старой версии, когда еще не было групп.