Функция filepath.Split
Функция filepath.Split разделяет путь на две части:
директорию и имя файла. В первый параметр мы передаем
строку с путем для разделения. Функция возвращает два
значения: первый — путь к директории (с завершающим
разделителем), второй — имя файла или последний
компонент пути. Если в пути нет разделителя,
то директория возвращается как пустая строка.
Синтаксис
dir, file := filepath.Split(path)
Пример
Давайте разобьем путь "/home/user/file.txt"
на директорию и имя файла:
package main
import (
"fmt"
"path/filepath"
)
func main() {
dir, file := filepath.Split("/home/user/file.txt")
fmt.Printf("dir: %q, file: %q\n", dir, file)
}
Результат выполнения кода:
"dir: /home/user/, file: file.txt"
Пример
Если путь не содержит разделителя, то директория возвращается пустой, а файл — это весь путь:
package main
import (
"fmt"
"path/filepath"
)
func main() {
dir, file := filepath.Split("file.txt")
fmt.Printf("dir: %q, file: %q\n", dir, file)
}
Результат выполнения кода:
"dir: , file: file.txt"
Пример
Если путь заканчивается разделителем, то имя файла возвращается пустым:
package main
import (
"fmt"
"path/filepath"
)
func main() {
dir, file := filepath.Split("/home/user/")
fmt.Printf("dir: %q, file: %q\n", dir, file)
}
Результат выполнения кода:
"dir: /home/user/, file: "
Пример
Разделим путь с несколькими уровнями вложенности:
package 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)
}
Результат выполнения кода:
"dir: /var/log/nginx/, file: access.log"
Смотрите также
-
функцию
filepath.Join,
которая объединяет части пути в один путь -
функцию
filepath.Dir,
которая возвращает директорию пути без завершающего разделителя -
функцию
filepath.Base,
которая возвращает последний элемент пути -
функцию
filepath.Clean,
которая нормализует путь, удаляя лишние разделители