gtFileSystem
export class : gtRefObject

Класс содержащий статичные методы для работы с файлами и папками.

Константы
constexpr u32 GT_MAX_PATH = 0xffff;

Методы
gtFileSystem::addArchive
GT_API static bool addArchive( const gtString& file );
Добавить архив.

gtFileSystem::createFile
GT_API static gtPtrNew<gtFile> createFile( const gtString& fileName, gtFileMode mode, gtFileAccessMode access, gtFileAction action, gtFileShareMode shareMode = gtFileShareMode::None, u32 attributeFlags = 0u );
Параметр attributeFlags хранит флаги указанные в gtFileAttribute.
Создаёт файл.
Необъодимо использовать gtPtr для автоматического закрытия файла и удаления объекта.
gtPtr<gtFile> file = gtFileSystem::createFile(...)
Можно использовать синоним gtFile_t.
gtFile_t file = gtFileSystem::createFile(...)
Для краткости записи вызова метода createFile созданы вспомогательные функции.

gtFileSystem::copyFile
GT_API static bool copyFile( const gtString& existingFileName, const gtString& newFileName, bool overwrite );
Создаёт копию файла.
Параметр overwrite true если нужно перезаписать существующий файл.

gtFileSystem::createDir
GT_API static bool createDir( const gtString& dir );
Создать директорию.

gtFileSystem::deleteDir
GT_API static bool deleteDir( const gtString& dir );
Удалит директорию вместе с файлами и поддиректориями.

gtFileSystem::deleteFile
GT_API static bool deleteFile( const gtString& file );
Удалит файл.

gtFileSystem::existDir
GT_API static bool existDir( const gtString& dir );
Вернёт истину если указанная директория существует.

gtFileSystem::existFile
GT_API static bool existFile( const gtString& file );
Вернёт истину если указанный файл существует.

gtFileSystem::getProgramPath
GT_API static gtString getProgramPath();
Получить путь к программе.

gtFileSystem::getRealPath
GT_API static gtString getRealPath( const gtString& in );
Получить из относительного пути реальный путь.

gtFileSystem::getSystemPath
GT_API static gtString getSystemPath();
Получить путь к системной директории.

gtFileSystem::getDirObject
GT_API static bool getDirObject( DirObject* inout );
При сканировании директории, получить текущий объект директории.

gtFileSystem::scanDirBegin
GT_API static void scanDirBegin( gtString dir );
Начать сканировать директорию.
Перед сканированием директории, нужно вызвать эту функцию.
После сканирования, нужно вызвать gtFileSystem::scanDirEnd.

gtFileSystem::scanDirEnd
GT_API static void scanDirEnd();
Завершить сканирование директории.

gtFileSystem::unpack
GT_API static u8 * unpack( const gtString& file, u32 * size );
Распакует файл из архива.
Вернёт массив который нужно будет удалить вызвав gtMemFree.
Для автоматического удаления можно использовать класс gtMemPtr.
Размер данных запишется в переменную через второй параметр.
Если файлы не найдутся в папке, то плагины при загрузке ресурсов попробоют найти эти файлы в архиве.

gtFileSystem::XMLRead
GT_API static gtPtr<gtXMLDocument> XMLRead( const gtString& file );
Прочитать XML файл.

gtFileSystem::XMLWrite
GT_API static void XMLWrite( const gtString& file, gtXMLNode* rootNode, bool utf8 = false );
Записать XML файл.
Для записи необходим лиш корневой элемент.


Дополнительные типы
Данные типы созданы в помощь при сканировании директории.

gtFileSystem::DirObjectType
enum class : u32
Перечисляет тип объекта что находится в директории.

info
Не директория и не файл (например точки . и .. ).

folder
Директория.

file
Файл.

gtFileSystem::DirObject
struct
Описывает объект директории.
Открытые члены
wchar_t path[GT_MAX_PATH];
Полный путь к объекту.

DirObjectType type;
Тип объекта.

u32 size;
Размер в байтах.