wiki:FileListFormat

Version 11 (modified by Sagrer, 16 years ago) (diff)

--

Формат файлов FileList (*.flist)

Версия №2. В процессе проектирования.

Более старые версии:


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

Формат представляет из себя гибрид *.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) - имена всех используемых групп файлов, через запятую, по умолчанию значение только none, но вообще это значение используется для оптимизации и исключения необходимости парсеру каждый раз при открытии нового списка просматривать весь список файлов для получения списка всех групп - поэтому реализация обязана поддерживать актуальность информации в данном параметре после любого изменения собственно списка файлов.

[Files]

Нестандартная для обычного ini секция. Внутри список файлов - по 1 строке на каждый файл. Строка вида: Parameter1 : Value1; Parameter2 : Value2; ... ; ParameterN : ValueN

Обязательные параметры:

  • File - путь к файлу или папке.
  • Type - тип - файл или папка - значение либо File либо Dir.

Также возможны параметры:

  • Size с числовым значением в байтах - размер;
  • CRC32 со значением чексуммы.
  • Group с текстовым значением - именем группы файла. Если [Main]->UseGroups == true то этот параметр обязателен. Если файл не принадлежит явно какой-либо группе - то устанавливается значение "none" (без кавычек, ессно) - например при чтении списка в формате более старой версии, когда еще не было групп.