Функция filepath.Dir

Функция filepath.Dir из пакета path/filepath возвращает все элементы пути, кроме последнего (имени файла или последней папки). Она полезна, когда нужно получить родительскую директорию для какого-либо пути. На вход функция принимает один параметр — строку с путем, а возвращает строку с директорией.

Если путь пустой, функция возвращает "." (текущую директорию). Если путь состоит только из имени файла, возвращается также ".". В случае, если передан путь без слеша, но с именем папки, функция вернет ".".

Синтаксис

gofilepath.Dir(path)

Пример

Давайте получим директорию для пути с файлом:

gopackage main

import (
  "fmt"
  "path/filepath"
)

func main() {
  res := filepath.Dir("/home/user/docs/file.txt")
  fmt.Println(res)
}

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

go"/home/user/docs"

Пример

Получим родительскую папку для пути, заканчивающегося на слеш:

gopackage main

import (
  "fmt"
  "path/filepath"
)

func main() {
  res := filepath.Dir("/home/user/docs/")
  fmt.Println(res)
}

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

go"/home/user/docs"

Пример

Если путь содержит только имя файла, функция вернет текущую директорию:

gopackage main

import (
  "fmt"
  "path/filepath"
)

func main() {
  res := filepath.Dir("file.txt")
  fmt.Println(res)
}

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

go"."

Пример

Рассмотрим случай с пустой строкой:

gopackage main

import (
  "fmt"
  "path/filepath"
)

func main() {
  res := filepath.Dir("")
  fmt.Println(res)
}

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

go"."

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

  • функцию filepath.Base,
    которая возвращает последний элемент пути (имя файла или папки)
  • функцию filepath.Split,
    которая разделяет путь на директорию и имя файла
  • функцию filepath.Clean,
    которая очищает путь от лишних слешей и переходов
  • функцию filepath.Abs,
    которая возвращает абсолютный путь из относительного