FMPFile
Представляет собой файл либо директорию.
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
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
Используется ли шифрование. Значение не отражает использование FMP.Builder.debugNoEncryption, а только Builder.encryption.
True если работаем с директорией, false если с файлом.
Functions
Удалить файл с локальной файловой системы.
Удалить файл на сервере.
Проверка существует ли файл на локальной файловой системе по пути local.
UNIX Meta информация о файле на сервере.