FMPFile

interface FMPFile : FMPObject

Представляет собой файл либо директорию.

Since

21.04.01

Samples

import ru.fsight.fmp.FMP
import ru.fsight.fmp.FMPFile
import ru.fsight.fmp.FMPUser
import java.io.File
fun main() { 
   //sampleStart 
   /*
 * Пример создания файла.
 */
val file: FMPFile = fmp.file          // Создать Builder.
	.mount("mount")                     // Указать точку монтирования на сервере.
	.remote("app/img/file.jpg")         // Указать путь к файлу на сервере.
	.local(user.cache + "/example.jpg") // Указать, где хранить файл на устройстве.
	.directory(true)                    // true если работаем с директорией, false если с файлом.
	.build()                            // Создать FMPFile. 
   //sampleEnd
}
import ru.fsight.fmp.FMP
import ru.fsight.fmp.FMPFile
import ru.fsight.fmp.FMPUser
import java.io.File
fun main() { 
   //sampleStart 
   /*
 * Загрузка файла с сервера.
 * Аналогично с директориями.
 */
val downloaded:     Boolean = file.download().status     // True если файл успешно загружен.
val deleted_cache:  Boolean = file.deleteLocal().status  // True если файл удалён  с устройства.
val deleted_remote: Boolean = file.deleteRemote().status // True если файл удалён  с сервера. 
   //sampleEnd
}
import ru.fsight.fmp.FMP
import ru.fsight.fmp.FMPFile
import ru.fsight.fmp.FMPUser
import java.io.File
fun main() { 
   //sampleStart 
   /*
 * Пример чтения метаданных файла.
 */
val meta: FMPFile.Meta = file.getMeta().result  // Загрузить метаданные с сервера.

val size_bytes: Long = meta.size // Получить размер файла в  байтах.
val size_mb:    Long = size_bytes / 1000 / 1000 // Конвертировать байты в мегабайты.
val size_mib:   Long = size_bytes / 1024 / 1024 // Конвертировать байты в мебибайты. 
   //sampleEnd
}
import ru.fsight.fmp.FMP
import ru.fsight.fmp.FMPFile
import ru.fsight.fmp.FMPUser
import java.io.File
fun main() { 
   //sampleStart 
   /*
 * Пример просмотра содержимого директории.
 */
if (file.isDirectory) { // Содержимое есть только у директорий.
	val list: List<FMPFile> = file.ls().result // Получить список файлов. Может быть пустым.
	list.map { it.name }                       // Получить названия всех файлов внутри директории
} 
   //sampleEnd
}
import ru.fsight.fmp.FMP
import ru.fsight.fmp.FMPFile
import ru.fsight.fmp.FMPUser
import java.io.File
fun main() { 
   //sampleStart 
   /*
 * Пример поиска файлов в директориях.
 */
val dir_root: FMPFile = fmp.file // Создать Builder.
	.directory(true) // Указать, что мы работаем с директорией, а не файлом.
	.depth(2)        // Указать, что мы хотим искать только в текущей директории и её под-директориях, исключая под-под-директории.
	.build()         // Создать FMPFile.

val jpgs:   List<FMPFile> = dir_root.search(".jpg", false).result // Все файлы и директории в названии которых есть .jpg.
val images: List<FMPFile> = dir_root.search(".jpg\\|.png$".toRegex()).result // Все файлы и директории название которых оканчивается на .jpg или .png.
jpgs.forEach { it.download() } // Загрузить все файлы. 
   //sampleEnd
}
import ru.fsight.fmp.FMP
import ru.fsight.fmp.FMPFile
import ru.fsight.fmp.FMPUser
import java.io.File
fun main() { 
   //sampleStart 
   /*
 * Пример выгрузки файла на сервер.
 */
val is_uploaded: Boolean = file.upload().result // True если файл был выгружен. 
   //sampleEnd
}
import ru.fsight.fmp.FMP
import ru.fsight.fmp.FMPFile
import ru.fsight.fmp.FMPUser
import java.io.File
fun main() { 
   //sampleStart 
   /*
 * Пример загрузки файла без шифрования.
 */
val file: FMPFile = fmp.file.encryption(false) // выключаем шифрование для конкретного файла/директории.
	.build()

file.download()
val unencrypted: ByteArray = File(file.local).readBytes() // Считанные данные будут незашифрованны. 
   //sampleEnd
}
import ru.fsight.fmp.FMP
import ru.fsight.fmp.FMPFile
import ru.fsight.fmp.FMPUser
import java.io.File
fun main() { 
   //sampleStart 
   /*
 * Пример создания директории на сервере.
 */
val mkdir: Boolean = dir.mkdir().result // true означает, что директория создана на сервере. 
   //sampleEnd
}
import ru.fsight.fmp.FMP
import ru.fsight.fmp.FMPFile
import ru.fsight.fmp.FMPUser
import java.io.File
fun main() { 
   //sampleStart 
   /*
 * Пример проверки существования файла.
 */
val exists_remote = file.existsRemote().result // true если файл существует на сервере.
val exists_local  = file.existsLocal().result  // true если файл существует на файловой системе устройства. 
   //sampleEnd
}

Types

Link copied to clipboard
Link copied to clipboard
data class Meta(val mode: Long = -1L, val inode: Long = -1L, val dev: Long = -1L, val nlink: Long = -1L, val uid: Long = -1L, val gid: Long = -1L, val size: Long = -1L, val atime: Long = -1L, val mtime: Long = -1L, val ctime: Long = -1L, val blocks: Long = -1L, val blksize: Long = -1L, val rdev: Long = -1L)

UNIX метаданные файла на сервере. mode Права доступа. Чаще всего 755 для директорий и 644 для файлов. inode Номер INODE. Если у двух файлов одинаковый INODE - это физически один файл на файловой системе. dev ID устройства, на котором находится файл. nlink Количество жёстких ссылок на файл. uid ID владельца файла. 0 для root. gid ID группы файла. size Размер в байтах. atime UNIX время последнего доступа к файлу. mtime UNIX время последнего изменения файла. ctime UNIX время когда файл был создан. blocks Количество блоков выделенных под файл. Размер может быть меньше blksize когда у файла есть "дыры". blksize Размер блока файловой системы. rdev ID устройства если файл является специальным файлом, например блочным устройством.

Properties

Link copied to clipboard
abstract val depth: Int

Глубина, используемая при работе с директориями. Например, глубина 1 в методах search и download будет возвращать только файлы внутри текущей директории, глубина 2 в текущей и её суб-директориях без суб-суб-директорий и так далее.

Link copied to clipboard
abstract val encryption: Boolean

Используется ли шифрование. Значение не отражает использование FMP.Builder.debugNoEncryption, а только Builder.encryption.

Link copied to clipboard
abstract val isDirectory: Boolean

True если работаем с директорией, false если с файлом.

Link copied to clipboard
abstract val local: String

Полный путь к файлу на локальной файловой системе, например "/path/to/file.jpg".

Link copied to clipboard
abstract val mount: String

Точка монтирования на сервере.

Link copied to clipboard
abstract val name: String

Имя файла. Получается из remote.

Link copied to clipboard
abstract val remote: String

Относительный путь к файлу на сервере, например "path/to/file.jpg".

Functions

Link copied to clipboard
abstract fun deleteLocal(): FMPResult<Boolean>

Удалить файл с локальной файловой системы.

Link copied to clipboard
abstract fun deleteRemote(): FMPResult<Boolean>

Удалить файл на сервере.

Link copied to clipboard
abstract fun download(): FMPResult<Boolean>

Загрузить файл или директорию на локальную файловую систему по пути local с указанным depth.

Link copied to clipboard
abstract operator override fun equals(other: Any?): Boolean

Сравнить объекты между собой.

Link copied to clipboard
abstract fun existsLocal(): FMPResult<Boolean>

Проверка существует ли файл на локальной файловой системе по пути local.

Link copied to clipboard
abstract fun existsRemote(): FMPResult<Boolean>

Проверка существует ли файл на сервере по пути remote в точке монтирования mount.

Link copied to clipboard
abstract fun getMeta(): FMPResult<FMPFile.Meta>

UNIX Meta информация о файле на сервере.

Link copied to clipboard
abstract override fun hashCode(): Int

Хэш-код объектов. В отличие от equals он будет одинаков для объектов с одинаковыми ключевыми параметрами, но созданными от разных объектов FMP.

Link copied to clipboard
abstract fun ls(): FMPResult<List<FMPFile>>

Для директории возвращает список FMPFile внутри директории на сервере с постоянной глубиной 1.

Link copied to clipboard
abstract fun mkdir(): FMPResult<Boolean>

Создать пустую директорию на сервере.

Link copied to clipboard
abstract fun read(): FMPResult<ByteArray>

Расшифровать файл и получить байты данных.

Link copied to clipboard
abstract override fun rebuild(): FMPFile.Builder
Link copied to clipboard
abstract fun search(regex: Regex): FMPResult<List<FMPFile>>

Поиск по регулярному выражению в именах рекурсивно внутри директории с указанным depth.

abstract fun search(search: String, ignoreCase: Boolean): FMPResult<List<FMPFile>>

Поиск строки в именах рекурсивно внутри директории с указанным depth.

Link copied to clipboard
abstract override fun toString(): String

Получить ключевые параметры объекта в виде строки.

Link copied to clipboard
abstract fun upload(): FMPResult<Boolean>

Выгрузить файл на сервер. Выгрузка директории не поддерживается.