НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
623 of 1310 menu

Функция relativeTo

Функция relativeTo вычисляет относительный путь от текущего файла к указанному целевому файлу. Применяется к объектам типа File и возвращает новый объект File, представляющий относительный путь. Если файлы находятся на разных корневых устройствах или один из путей является относительным, функция выбрасывает исключение IllegalArgumentException.

Импорт

import java.io.File

Синтаксис

fun File.relativeTo(target: File): File

Пример

Получим относительный путь от директории "/home/user/docs" к файлу "/home/user/docs/reports/annual.pdf":

val baseDir = File("/home/user/docs") val targetFile = File("/home/user/docs/reports/annual.pdf") val res = targetFile.relativeTo(baseDir) println(res.path)

Результат выполнения кода:

String "reports/annual.pdf"

Пример

Получим относительный путь от файла "/var/www/index.html" к файлу "/var/www/css/style.css":

val baseFile = File("/var/www/index.html") val targetFile = File("/var/www/css/style.css") val res = targetFile.relativeTo(baseFile) println(res.path)

Результат выполнения кода:

String "../css/style.css"

Пример

Попытка получить относительный путь между файлами на разных дисках вызовет исключение:

val baseFile = File("C:/Windows") val targetFile = File("D:/Data") try { val res = targetFile.relativeTo(baseFile) println(res.path) } catch (e: IllegalArgumentException) { println("Error: " + e.message) }

Результат выполнения кода:

String "Error: this and base files have different roots"

Пример

Использование относительного пути для создания нового файла относительно текущего:

val currentDir = File("/projects/app") val configFile = File("/projects/app/src/config/settings.json") val relativePath = configFile.relativeTo(currentDir) val newFile = File(currentDir, relativePath.path) println("Relative path: " + relativePath.path) println("Absolute path: " + newFile.absolutePath)

Результат выполнения кода:

String "Relative path: src/config/settings.json" String "Absolute path: /projects/app/src/config/settings.json"

Смотрите также

  • функцию resolve,
    которая разрешает относительный путь относительно текущего файла
  • функцию resolveSibling,
    которая разрешает путь относительно родительской директории текущего файла
  • функцию normalize,
    которая нормализует путь, удаляя избыточные элементы
  • функцию toRelativeString,
    которая возвращает относительный путь в виде строки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить