Функция os.Readlink
Функция os.Readlink читает содержимое символической ссылки
и возвращает путь, на который она указывает.
В первый параметр мы передаем путь к символической ссылке.
Функция возвращает строку с путем назначения и ошибку.
Если путь не является символической ссылкой или произошла ошибка чтения,
функция возвращает ошибку.
Синтаксис
path, err := os.Readlink(linkPath)
Пример
Давайте создадим символическую ссылку и прочитаем ее содержимое:
package main
import (
"fmt"
"os"
)
func main() {
// Создаем символическую ссылку
err := os.Symlink("/tmp/original.txt", "/tmp/link.txt")
if err != nil {
fmt.Println("Error creating symlink:", err)
return
}
// Читаем содержимое ссылки
res, err := os.Readlink("/tmp/link.txt")
if err != nil {
fmt.Println("Error reading symlink:", err)
return
}
fmt.Println(res)
}
Результат выполнения кода:
"/tmp/original.txt"
Пример
Давайте попробуем прочитать содержимое обычного файла, а не символической ссылки:
package main
import (
"fmt"
"os"
)
func main() {
// Создаем обычный файл
file, err := os.Create("/tmp/file.txt")
if err != nil {
fmt.Println("Error creating file:", err)
return
}
file.Close()
// Пытаемся прочитать файл как символическую ссылку
res, err := os.Readlink("/tmp/file.txt")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(res)
}
Результат выполнения кода:
"Error: readlink /tmp/file.txt: invalid argument"
Пример
Давайте прочитаем содержимое символической ссылки с относительным путем:
package main
import (
"fmt"
"os"
)
func main() {
// Создаем символическую ссылку с относительным путем
err := os.Symlink("./original.txt", "/tmp/relative-link.txt")
if err != nil {
fmt.Println("Error creating symlink:", err)
return
}
// Читаем содержимое ссылки
res, err := os.Readlink("/tmp/relative-link.txt")
if err != nil {
fmt.Println("Error reading symlink:", err)
return
}
fmt.Println(res)
}
Результат выполнения кода:
"./original.txt"
Смотрите также
-
функцию
os.Symlink,
которая создает символическую ссылку -
функцию
os.Lstat,
которая получает информацию о файле, не переходя по символическим ссылкам -
функцию
os.Stat,
которая получает информацию о файле, переходя по символическим ссылкам -
функцию
filepath.EvalSymlinks,
которая вычисляет абсолютный путь, разрешая все символические ссылки