FMPFile

Описание

Класс 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 }
depth Глубина при работе с директорией.
var depth: Int { get }
children Список дочерних элементов.
var children: [FMPFile]? { get }

Методы

Метод Описание

ls(completion:)

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

Параметры:

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

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

Параметры:

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

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

Параметры:

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

deleteRemote(completion:) Удаление файла на сервере. Для директории возвращает ошибку.
func deleteRemote(completion: @escaping FMPRequestResponseHandler)

Параметры:

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

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

Параметры:

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

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

Параметры:

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

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

Параметры:

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

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

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

Параметры:

  • regex. Регулярное выражение для поиска по имени файла или директории.

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

Параметры:

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

decryptToFile(at:) Расшифровка файла в локальной директории приложения в файл.
func decryptToFile(at path: String)

Параметры:

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

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 = fmp.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 = fmp.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 = fmp.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 = fmp.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 = fmp.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 = fmp.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 = 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. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = fmp.file.build()
  
// Зашифруем файл в локальной директории в файл по указанному пути
let encryptToFileSuccess: Bool = file.encryptToFile(at: "encryptedLocalPath")

Расшифровка файла в локальной директории в файл:

// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = fmp.file.build()
  
// Расшифруем файл в локальной директории в файл по указанному пути
file.decryptToFile(at: "decryptedLocalPath")

Шифрование файла в локальной директории в байтовый буфер:

// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = fmp.file.build()
  
// Зашифруем файл в локальной директории в байтовый буфер
let encryptedData: Data = file.encryptToData()

Расшифровка файла в локальной директории в байтовый буфер:

// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = fmp.file.build()
  
// Расшифруем файл в локальной директории в байтовый буфер
let decryptedData: Data = file.decryptToData()

Расшифровка файла в локальной директории в строку:

// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = fmp.file.build()
  
// Расшифруем файл в локальной директории в строку
let decryptedString: String = file.decryptToString()

Удаление файла или папки из локальной директории:

// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = fmp.file.build()
  
// Удалим файл из локальной директории приложения
 do {
    try file.deleteLocal()
} catch let error {
    // Выведем описание ошибки
    print(error.localizedDescription)
}

Копирование FMPFile:

// Построим экземпляр класса FMPFile. Подробнее в примерах к FMPFile.Builder.
let file: FMPFile = fmp.file.build()
  
// Скопируем экземпляр класса FMPUser.
let fileCopy: FMPFile = file.copy().build()

См. также:

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