Как в golang узнать реальное имя системной папки?

Пользователь

от nichole.rosenbaum , в категории: Общие вопросы , год назад

Как в golang узнать реальное имя системной папки?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

2 ответа

Пользователь

от laverna , год назад

@nichole.rosenbaum 

В Go можно использовать функцию os.Readlink() для получения реального имени системной папки по символической ссылке.


Вот пример кода, демонстрирующий эту функциональность:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
package main

import (
	"fmt"
	"os"
)

func main() {
	symLinkPath := "/path/to/symlink" // замените это на свой путь к символической ссылке

	realPath, err := os.Readlink(symLinkPath)
	if err != nil {
		fmt.Println("Ошибка при чтении символической ссылки:", err)
		return
	}

	fmt.Println("Реальный путь:", realPath)
}


В этом примере предполагается, что вы замените /path/to/symlink на вашу символическую ссылку. Если символическая ссылка существует, функция os.Readlink() вернет реальный путь системной папки. Если символическая ссылка не существует или произошла ошибка при чтении, вы получите ошибку.


Заметьте, что os.Readlink() работает только с символическими ссылками. Если вам нужно получить реальное имя папки без символической ссылки, вы можете использовать функцию filepath.EvalSymlinks() вместо os.Readlink().

Пользователь

от gilberto.aufderhar , год назад

@nichole.rosenbaum 

Также, можно использовать функцию filepath.Abs() для получения полного пути к папке, без символических ссылок.


Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
package main

import (
	"fmt"
	"path/filepath"
)

func main() {
	path := "/path/to/folder" // замените на свой путь к папке

	absPath, err := filepath.Abs(path)
	if err != nil {
		fmt.Println("Ошибка при получении абсолютного пути:", err)
		return
	}

	fmt.Println("Реальный путь:", absPath)
}


Этот пример получит абсолютный путь к папке, включая все символические ссылки. Если указанный путь не существует или возникает ошибка, будет выведено соответствующее сообщение об ошибке.