Файловая система
Модуль stappler_filesystem предоставляет интерфейсы для работы с путями файлов (SPFilepath.h) и операции с файловой системой (SPFilesystem.h).
Система предполагает, что файловые пути будут представлены в формате POSIX. Для Windows предполагается формат путей cygwin (cygpath -u).
SDK определяет набор каноничных префиксов для долгосрочного хранения путей с учётом возможности потенциального переноса исполняемого пакета приложения:
%CACHE%— для файлов кеша%DOCUMENTS%— для постоянно хранимых документов%WRITEABLE%— для директории с возможностью беспрепятственной записи%CURRENT%— для текущей директории%PLATFORM%— для платформозависимой директории, соотвествующей исполняемому пакету
Список операций с файловыми путями:
isAbsolute— проверяет, является ли путь абсолютнымisCanonical— проверяет, определён ли путь как каноническийisBundled— проверяет, находится ли путь внутри приватной директории приложенияisAboveRoot— проверяет, не выходит ли путь выше корневой директорииvalidatePath— проверяет, содержит ли путь излишние переходы внутри директорийreconstructPath— приводит путь к окончательному виду, убирая переходы на уровень выше и внутри уровняabsolute— приводит путь к абсолютному видуcanonical— приводит путь к каноническому виду, если это возможноroot— возвращает путь на один уровень выше текущегоlastComponent— возвращает последний компонент путиfullExtension— возвращает полное расширение имени файлаlastExtension— возвращает последнее расширение имени файлаname— возвращает имя файла без расширенияsplit— разделяет путь на компонентыmerge— создаёт путь из разделённых компонентовreplace— подменяет часть корневого пути пути
Операции с файловой системой определены в нескольких пространствах имён. Пространство имён stappler::filesystem соответствует общедоступным функциям, stappler::filesystem::native — прямому доступу к функциям файловой системы текущей платформы, stappler::filesystem::platform — функциям виртуальной файловой системы, предоставляемой платформой для пакета приложения. Только функции из stappler::filesystem можно считать стабильными.
Общие функции файловой системы унифицировано работают и с реальными путями, и с путями внутри виртуальной файловой системы.
Список основных функций:
exists— проверяет файл на существованиеstat— получает метаданные файлаmkdir— создаёт директориюmkdir_recursive— создаёт директории рекурсивноtouch— обновляет время доступа к файлуmove— перемещает файл (копирует и удаляет исходный в случае невозможности)copy— копирует файлremove— удаляет файл или директориюftw— обходит дерево файловwritablePath— возвращает путь к возможному для записи файлу на основе имениdocumentsPath— возвращает путь к файлу-документу на основе имениcachesPath— возвраает путь к файлу кеша на основе имениcurrentDir— возвращает текущую рабочую директориюwrite— записывает данные по файловому путиreadWithConsumer— читает данные по файловому пути, используя универсаньный интерфейс потребителяreadIntoMemory— читает файл в память