Класс FMPFile предназначен для работы с файлами.
class FMPFile
Свойство | Описание |
children | Список дочерних элементов.
var children: [FMPFile]? { get } |
depth | Глубина при работе с директорией.
var depth: Int { get } |
localPath | Путь к файлу или директории в локальной директории приложения
относительно папки Documents.
var localPath: String { get } |
mount | Имя подключения к хранилищу на сервере.
var mount: String { get } |
name | Имя файла или директории.
var name: String { get } |
remotePath |
Путь к файлу или директории на сервере.
var remotePath: String { get } |
type | Тип - файл или директория.
var type: FMPFile.Type { get } |
Метод | Описание |
copy() | Получение экземпляра класса-строителя для копирования FMPFile.
Возвращает экземпляр класса-строителя FMPFile.Builder.
func copy() -> FMPFile.Builder |
decryptToFile(at:) | Расшифровка файла в локальной директории приложения в файл.
Для директории возвращает ошибку.
func decryptToFile(at path: String) throws Параметры:
|
deleteLocal() | Удаление файла или папки из локальной директории приложения.
func deleteLocal() throws |
deleteRemote(completion:) | Удаление файла или директории на сервере.
func deleteRemote(completion: @escaping (DeleteRemoteResult) -> Void) Параметры:
|
download(completion:) | Загрузка файла или содержимого директории с сервера на устройство.
Загружает с сервера файл или содержимое директории с указанной
глубиной и сохраняет по указанному пути в локальной директории
приложения на устройстве. Если при инициализации FMP
был установлен ключ шифрования, то файлы шифруются с этим ключом.
Перед вызовом метода рекомендуется обновить список дочерних элементов
children с помощью метода ls(completion:).
func download(completion: @escaping (DownloadResult) -> Void) Параметры:
|
encryptToFile(at:) | Шифрование файла в локальной директории приложения в файл. Для
директории возвращает ошибку.
func encryptToFile(at path: String) throws -> Bool Параметры:
|
isExist(completion:) | Запрос на проверку существования файла на сервере. Для директории
возвращает ошибку.
func isExist(completion: @escaping (ExistResult) -> Void) Параметры:
|
loadMeta(completion:) | Запрос метаданных файла с сервера. Для директории возвращает
ошибку.
func loadMeta(completion: @escaping (MetaResult) -> Void) Параметры:
|
ls(completion:) |
Получение содержимого директории. Рекурсивно проходится по
содержимому директории, обновляя список дочерних элементов children.
Для директории возвращает список дочерних элементов, а для файла
возвращает пустой список.
func ls(completion: @escaping (ChildrenResult) -> Void) Параметры:
|
search(_:caseInsensitive:) | Рекурсивный поиск файлов или директорий по имени. Производит
рекурсивный поиск в дочерних элементах по имени файла или директории.
Поиск производится по условию содержания параметра name в имени
файла/директории. Перед вызовом этого метода рекомендуется обновить
список дочерних элементов children с помощью метода ls(completion:).
func search(_ name: String, caseInsensitive: Bool = false) -> [FMPFile] Параметры:
|
upload(completion:) | Загрузка файла с устройства на сервер. Загружает на сервер
файл, находящийся по указанному пути в локальной директории приложения
на устройстве. Если при инициализации FMP
был установлен ключ шифрования, файлы перед отправкой расшифровываются
с этим ключом. Для директории создается папка на сервере по указанному
пути в свойстве remotePath.
func upload(completion: @escaping (UploadResult) -> Void) Параметры:
|
Псевдоним типа | Описание |
ChildrenResult | Результат запроса содержимого директории. Используется методом
ls(completion:).
typealias ChildrenResult = Result<[FMPFile], Error> |
DeleteRemoteResult | Результат запроса на удаление файла или директории на сервере.
Используется методом deleteRemote(completion:).
typealias DeleteRemoteResult = Result<Bool, Error> |
DownloadResult | Результат запроса загрузки файла или содержимого директории
с сервера на устройство. Используется методом download(completion:).
typealias DownloadResult = Result<Bool, Error> |
ExistResult | Результат запроса проверки существования файла на сервере.
Используется методом isExist(completion:).
typealias ExistResult = Result<Bool, Error> |
MetaResult | Результат запроса метаданных файла с сервера. Используется
методом loadMeta(completion:).
typealias MetaResult = Result<Meta, Error> |
UploadResult | Результат запроса загрузки файла с устройства на сервер. Используется
методом upload(completion:).
typealias UploadResult = Result<Bool, Error> |
Получение содержимого директории:
// Построим экземпляр класса FMPFile
let folder: FMPFile = fmp.file.isDirectory().build()
// Получим список дочерних элементов
file.ls() { (result) in
switch result {
case .success(let files):
// Выведем полученный список названий дочерних элементов
print(files.map {$0.name})
case .failure(let error):
// Выведем код и описание ошибки
print((error as? FMPError)?.code, (error as? FMPError)?.description)
}
}
Загрузка файла или содержимого директории с сервера на устройство:
// Построим экземпляр класса FMPFile
let file: FMPFile = fmp.file.build()
// Загрузим файл
file.download { (result) in
switch result {
case .success(_):
// Файл успешно загружен на устройство
case .failure(let error):
// Выведем код и описание ошибки
print((error as? FMPError)?.code, (error as? FMPError)?.description)
}
}
Загрузка файла с устройства на сервер:
// Построим экземпляр класса FMPFile
let file: FMPFile = fmp.file.build()
// Загрузим файл
file.upload { (result) in
switch result {
case .success(_):
// Файл успешно загружен на сервер
case .failure(let error):
// Выведем код и описание ошибки
print((error as? FMPError)?.code, (error as? FMPError)?.description)
}
}
Удаление файла на сервере:
// Построим экземпляр класса FMPFile
let file: FMPFile = fmp.file.build()
// Загрузим файл
file.deleteRemote { (result) in
switch result {
case .success(_):
// Файл успешно удален на сервере
case .failure(let error):
// Выведем код и описание ошибки
print((error as? FMPError)?.code, (error as? FMPError)?.description)
}
}
Запрос метаданных файла с сервера:
// Построим экземпляр класса FMPFile
let file: FMPFile = fmp.file.build()
// Загрузим метаданные файла
file.loadMeta { (result) in
switch result {
case .success(let meta):
// Выведем размер файла
print(meta.size)
case .failure(let error):
// Выведем код и описание ошибки
print((error as? FMPError)?.code, (error as? FMPError)?.description)
}
}
Проверка существования файла на сервере:
// Построим экземпляр класса FMPFile
let file: FMPFile = fmp.file.build()
// Проверим существование файла на сервере
file.isExist() { (result) in
switch result {
case .success(_):
// Файл найден на сервере
case .failure(let error):
// Выведем код и описание ошибки
print((error as? FMPError)?.code, (error as? FMPError)?.description)
}
}
Рекурсивный поиск файлов или директорий по имени:
// Построим экземпляр класса FMPFile
let folder: FMPFile = fmp.file.isDirectory().build()
// Осуществим поиск элементов по имени "name" без учета регистра
let files: [FMPFile] = folder.search("name")
// Построим экземпляр класса NSRegularExpression, соответствующий регулярному выражению
let regex = try! NSRegularExpression(pattern: "[a-z0-9]name[a-z0-9]", options: [])
// Осуществим поиск элементов по имени с использованием регулярного выражения
let results: [FMPFile] = folder.search(regex)
Шифрование файла, расположенного в локальной директории, в файл:
// Построим экземпляр класса FMPFile
let file: FMPFile = fmp.file.build()
// Зашифруем файл, расположенный в локальной директории, в файл по указанному пути
do {
try file.encryptToFile(at: "encryptedLocalPath")
} catch let error {
// Выведем описание ошибки
print(error.localizedDescription)
}
Расшифровка файла, расположенного в локальной директории, в файл:
// Построим экземпляр класса FMPFile
let file: FMPFile = fmp.file.build()
// Расшифруем файл, расположенный в локальной директории, в файл по указанному пути
do {
try file.decryptToFile(at: "decryptedLocalPath")
} catch let error {
// Выведем описание ошибки
print(error.localizedDescription)
}
Удаление файла или папки из локальной директории:
// Построим экземпляр класса FMPFile
let file: FMPFile = fmp.file.build()
// Удалим файл из локальной директории приложения
do {
try file.deleteLocal()
} catch let error {
// Выведем описание ошибки
print(error.localizedDescription)
}
Копирование экземпляра класса FMPFile:
// Построим экземпляр класса FMPFile
let file: FMPFile = fmp.file.build()
// Скопируем экземпляр класса FMPFile
let fileCopy: FMPFile = file.copy().build()
См. также: