Файловая система
Модуль 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
— читает файл в память