FMPFile

Описание

Класс 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

Параметры:

  • path. Путь к расшифрованному файлу в локальной директории приложения относительно папки Documents.

deleteLocal() Удаление файла или папки из локальной директории приложения.
func deleteLocal() throws
deleteRemote(completion:) Удаление файла или директории на сервере.
func deleteRemote(completion: @escaping (DeleteRemoteResult) -> Void)

Параметры:

  • completion. Замыкающее выражение, содержащее результат выполнения метода.

download(completion:) Загрузка файла или содержимого директории с сервера на устройство. Загружает с сервера файл или содержимое директории с указанной глубиной и сохраняет по указанному пути в локальной директории приложения на устройстве. Если при инициализации FMP был установлен ключ шифрования, то файлы шифруются с этим ключом. Перед вызовом метода рекомендуется обновить список дочерних элементов children с помощью метода ls(completion:).
func download(completion: @escaping (DownloadResult) -> Void)

Параметры:

  • completion. Замыкающее выражение, содержащее результат выполнения метода.

encryptToFile(at:) Шифрование файла в локальной директории приложения в файл. Для директории возвращает ошибку.
func encryptToFile(at path: String) throws -> Bool

Параметры:

  • path. Путь к зашифрованному файлу в локальной директории приложения относительно папки Documents.

isExist(completion:) Запрос на проверку существования файла на сервере. Для директории возвращает ошибку.
func isExist(completion: @escaping (ExistResult) -> Void)

Параметры:

  • completion. Замыкающее выражение, содержащее результат выполнения метода.

loadMeta(completion:) Запрос метаданных файла с сервера. Для директории возвращает ошибку.
func loadMeta(completion: @escaping (MetaResult) -> Void)

Параметры:

  • completion. Замыкающее выражение, содержащее результат выполнения метода.

ls(completion:)

Получение содержимого директории. Рекурсивно проходится по содержимому директории, обновляя список дочерних элементов children. Для директории возвращает список дочерних элементов, а для файла возвращает пустой список.
func ls(completion: @escaping (ChildrenResult) -> Void)

Параметры:

  • completion. Замыкающее выражение, содержащее результат выполнения метода.

search(_:caseInsensitive:) Рекурсивный поиск файлов или директорий по имени. Производит рекурсивный поиск в дочерних элементах по имени файла или директории. Поиск производится по условию содержания параметра name в имени файла/директории. Перед вызовом этого метода рекомендуется обновить список дочерних элементов children с помощью метода ls(completion:).
func search(_ name: String, caseInsensitive: Bool = false) -> [FMPFile]

Параметры:

  • name. Условие поиска по имени файла или директории;

  • caseInsensitive. Если true, то регистр букв игнорируется при поиске. Если false - регистр букв не игнорируется.

upload(completion:) Загрузка файла с устройства на сервер. Загружает на сервер файл, находящийся по указанному пути в локальной директории приложения на устройстве. Если при инициализации FMP был установлен ключ шифрования, файлы перед отправкой расшифровываются с этим ключом. Для директории создается папка на сервере по указанному пути в свойстве remotePath.
func upload(completion: @escaping (UploadResult) -> Void)

Параметры:

  • completion. Замыкающее выражение, содержащее результат выполнения метода.

Псевдонимы типов

Псевдоним типа Описание
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()

См. также:

Фреймворк FMPKit | Классы