Класс FMPFile предназначен для работы с файлами.
class FMPFile
| Свойство | Описание |
remotePath |
Путь к файлу или директории на сервере.
var remotePath: String { get }
|
| localPath | Путь к файлу или директории в локальной директории приложения
относительно папки Documents.
var localPath: String { get }
|
| mount | Имя подключения к хранилищу на сервере.
var mount: String { get }
|
| type | Тип - файл или директория.
var type: FMPFile.Type { get } |
| name | Имя файла или директории.
var name: String { get }
|
| key | Ключ шифрования.
var key: String { get }
|
| depth | Глубина при работе с директорией.
var depth: Int { get }
|
| children | Список дочерних элементов.
var children: [FMPFile]? { get }
|
| Метод | Описание |
ls(completion:) |
Получение содержимого директории. Рекурсивно проходится по
содержимому директории, получая список дочерних элементов. Для
файла возвращает пустой список.
func ls(completion: @escaping FMPFilesHandler) Параметры:
|
| download(completion:) | Загрузка файла или содержимого директории с сервера на устройство.
Загружает с сервера файл или содержимое директории с указанной
глубиной и сохраняет по указанному пути в локальной директории
приложения на устройстве. Если свойство key экземпляра FMPFile
не является пустой строчкой, файлы шифруются с этим ключом.
func download(completion: @escaping FMPRequestResponseHandler) Параметры:
|
| upload(completion:) | Загрузка файла с устройства на сервер. Загружает на сервер
файл, находящийся по указанному пути в локальной директории приложения
на устройстве. Если свойство key экземпляра FMPFile не является
пустой строчкой, файлы перед отправкой расшифровываются с этим
ключом. Для директории возвращает ошибку.
func upload(completion: @escaping FMPRequestResponseHandler) Параметры:
|
| deleteRemote(completion:) | Удаление файла на сервере. Для директории возвращает ошибку.
func deleteRemote(completion: @escaping FMPRequestResponseHandler) Параметры:
|
| loadMeta(completion:) | Запрос метаданных файла с сервера. Для директории возвращает
ошибку.
func loadMeta(completion: @escaping FMPFileMetaHandler) Параметры:
|
| isExist(completion:) | Запрос на проверку существования файла на сервере. Для директории
возвращает ошибку.
func isExist(completion: @escaping FMPRequestResponseHandler) Параметры:
|
| search(_:caseInsensitive:completion:) | Рекурсивный поиск в дочерних элементах по имени файла или директории.
Поиск производится по условию содержания параметра name в имени
файла/директории. При вызове метода перед поиском производится
получение списка дочерних элементов.
func search(_ name: String, caseInsensitive: Bool = true, completion: @escaping FMPFilesHandler) Параметры:
|
| search(_:completion:) | Рекурсивный поиск в дочерних элементах по имени файла или директории.
Поиск производится по условию соответствия имени файла/директории
регулярному выражению. При вызове метода перед поиском производится
получение списка дочерних элементов.
func search(_ regex: NSRegularExpression, completion: @escaping FMPFilesHandler) Параметры:
|
| checkKey(_:) | Проверка ключа шифрования для файла. Возвращает true
в случае верного ключа шифрования.
func checkKey(_ key: String) -> Bool Параметры:
|
| encryptToFile(at:) | Шифрование файла в локальной директории приложения в файл.
func encryptToFile(at path: String) -> Bool Параметры:
|
| decryptToFile(at:) | Расшифровка файла в локальной директории приложения в файл.
func decryptToFile(at path: String) Параметры:
|
| encryptToData() | Шифрование файла в локальной директории приложения в байтовый
буфер. Возвращает зашифрованный байтовый буфер.
func encryptToData() -> Data |
| decryptToData() | Расшифровка файла в локальной директории приложения в байтовый
буфер. Возвращает расшифрованный байтовый буфер.
func decryptToData() -> Data |
| decryptToString() | Расшифровка файла в локальной директории приложения в строку.
Возвращает расшифрованную строку.
func decryptToString() -> String |
| deleteLocal() | Удаление файла или папки из локальной директории приложения.
func deleteLocal() throws |
| copy() | Получение экземпляра класса-строителя для копирования FMPFile.
Возвращает экземпляр класса-строителя FMPFile.Builder.
func copy() -> FMPFile.Builder |
Получение содержимого директории:
// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let folder: FMPFile = FMPFactory().file.isDirectory().build()
// Получим список дочерних элементов
file.ls() { (success, error, files) in
if success {
// Выведем полученный список названий дочерних элементов
print(files.map {$0.name})
} else {
// Выведем код и описание ошибки
print(error?.code, error?.description)
}
}
Загрузка с сервера файла или содержимого директории на устройство:
// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
// Загрузим файл
file.download { (response) in
if response.success {
// Выведем ответ сервера
print(response.result)
} else {
// Выведем код и описание ошибки
print(response.error?.code, response.error?.description)
}
}
Загрузка на сервер файл с устройства:
// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
// Загрузим файл
file.upload { (response) in
if response.success {
// Выведем ответ сервера
print(response.result)
} else {
// Выведем код и описание ошибки
print(response.error?.code, response.error?.description)
}
}
Удаление файла на сервере:
// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
// Загрузим файл
file.deleteRemote(completion: { (response) in
if response.success {
// Выведем ответ сервера
print(response.result)
} else {
// Выведем код и описание ошибки
print(response.error?.code, response.error?.description)
}
}
Запрос метаданных файла с сервера:
// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
// Загрузим метаданные файла
file.loadMeta(completion: { (success, error, meta) in
if success {
// Выведем размер файла
print(meta.size)
} else {
// Выведем код и описание ошибки
print(error?.code, error?.description)
}
}
Проверка существования файла на сервере:
// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
// Проверим существование файла на сервере
file.isExist() { (response) in
if response.success {
// Выведем ответ сервера
print(response.result)
} else {
// Выведем код и описание ошибки
print(response.error?.code, response.error?.description)
}
}
Рекурсивный поиск файлов или директорий по имени:
// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let folder: FMPFile = FMPFactory().file.isDirectory().build()
// Осуществим поиск элементов по имени "name" без учета регистра
folder.search("name") { (success, error, files) in
if success {
// Выведем пути к найденным файлам
print(results.map {$0.remotePath})
} else {
// Выведем код и описание ошибки
print(error?.code, error?.description)
}
}
// Построим экземпляр класса NSRegularExpression, соответствующий регулярному выражению
let regex = try! NSRegularExpression(pattern: "[a-z0-9]name[a-z0-9]", options: [])
// Осуществим поиск элементов по имени с использованием регулярного выражения
folder.search(regex) { (success, error, results) in
if success {
// Выведем пути к найденным файлам
print(results.map {$0.remotePath})
} else {
// Выведем код и описание ошибки
print(error?.code, error?.description)
}
}
Проверка ключа шифрования:
// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
// Проверим, что ключ шифрования подходит для зашифрованного файла в локальной директории
let keyCheckSuccess: Bool = file.checkKey("key")
Шифрование файла в локальной директории в файл:
// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
// Зашифруем файл в локальной директории в файл по указанному пути
let encryptToFileSuccess: Bool = file.encryptToFile(at: "encryptedLocalPath")
Расшифровка файла в локальной директории в файл:
// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
// Расшифруем файл в локальной директории в файл по указанному пути
file.decryptToFile(at: "decryptedLocalPath")
Шифрование файла в локальной директории в байтовый буфер:
// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
// Зашифруем файл в локальной директории в байтовый буфер
let encryptedData: Data = file.encryptToData()
Расшифровка файла в локальной директории в байтовый буфер:
// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
// Расшифруем файл в локальной директории в байтовый буфер
let decryptedData: Data = file.decryptToData()
Расшифровка файла в локальной директории в строку:
// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
// Расшифруем файл в локальной директории в строку
let decryptedString: String = file.decryptToString()
Удаление файла или папки из локальной директории:
// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
// Удалим файл из локальной директории приложения
do {
try file.deleteLocal()
} catch let error {
// Выведем описание ошибки
print(error.localizedDescription)
}
Копирование FMPFile:
// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = FMPFactory().file.build()
// Скопируем экземпляр класса FMPUser.
let fileCopy: FMPFile = file.copy().build()
См. также: