Функция filepath.Split

Функция filepath.Split разделяет путь на две части: директорию и имя файла. В первый параметр мы передаем строку с путем для разделения. Функция возвращает два значения: первый — путь к директории (с завершающим разделителем), второй — имя файла или последний компонент пути. Если в пути нет разделителя, то директория возвращается как пустая строка.

Синтаксис

godir, file := filepath.Split(path)

Пример

Давайте разобьем путь "/home/user/file.txt" на директорию и имя файла:

gopackage main

import (
  "fmt"
  "path/filepath"
)

func main() {
  dir, file := filepath.Split("/home/user/file.txt")
  fmt.Printf("dir: %q, file: %q\n", dir, file)
}

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

go"dir: /home/user/, file: file.txt"

Пример

Если путь не содержит разделителя, то директория возвращается пустой, а файл — это весь путь:

gopackage main

import (
  "fmt"
  "path/filepath"
)

func main() {
  dir, file := filepath.Split("file.txt")
  fmt.Printf("dir: %q, file: %q\n", dir, file)
}

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

go"dir: , file: file.txt"

Пример

Если путь заканчивается разделителем, то имя файла возвращается пустым:

gopackage main

import (
  "fmt"
  "path/filepath"
)

func main() {
  dir, file := filepath.Split("/home/user/")
  fmt.Printf("dir: %q, file: %q\n", dir, file)
}

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

go"dir: /home/user/, file: "

Пример

Разделим путь с несколькими уровнями вложенности:

gopackage main

import (
  "fmt"
  "path/filepath"
)

func main() {
  dir, file := filepath.Split("/var/log/nginx/access.log")
  fmt.Printf("dir: %q, file: %q\n", dir, file)
}

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

go"dir: /var/log/nginx/, file: access.log"

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

  • функцию filepath.Join,
    которая объединяет части пути в один путь
  • функцию filepath.Dir,
    которая возвращает директорию пути без завершающего разделителя
  • функцию filepath.Base,
    которая возвращает последний элемент пути
  • функцию filepath.Clean,
    которая нормализует путь, удаляя лишние разделители