Maison >développement back-end >Golang >Existe-t-il une fonction qui renvoie un chemin absolu à partir d'un chemin relatif à un autre ?

Existe-t-il une fonction qui renvoie un chemin absolu à partir d'un chemin relatif à un autre ?

PHPz
PHPzavant
2024-02-05 23:15:081213parcourir

Existe-t-il une fonction qui renvoie un chemin absolu à partir dun chemin relatif à un autre ?

Contenu de la question

Je dois être capable de déterminer où se trouve un fichier en fonction des chemins utilisés dans différents fichiers. Il serait peut-être préférable d'utiliser un exemple :

Voici la structure du répertoire :

/
  foo
    bar.txt
    text.txt
  bar
    main.go

Dans le fichier text.txt, bar.txt est ./bar.txt引用,它可以工作,但是如果我尝试使用filepath.abs​​("从main.go找到<code>./bar.txt的绝对路径./bar.txt") 那么它将返回 /bar/bar.txt car il suppose qu'il s'agit du répertoire de travail actuel.

D'après la documentation : abs renvoie la représentation absolue du chemin. Si le chemin n'est pas absolu, il sera concaténé avec le répertoire de travail actuel pour le convertir en chemin absolu.

Ma question est de savoir comment obtenir le chemin absolu de ./bar.txt alors qu'il s'agit de ./bar.txt./bar.txt. Lié à text.txt.

Désolé, cette question est peut-être trop complexe, mais je ne peux pas penser à une meilleure façon de montrer un exemple.


Bonne réponse


Cette réponse est presque là mais j'ai réussi à la modifier à ma convenance.

func getabs(path string, locationpath string) string {
    new_file_path := path
    new_abs_path := path
    if filepath.isabs(new_file_path) {
        new_abs_path = new_file_path
    } else {
        new_abs_path, _ = filepath.abs(filepath.join(locationpath, path))
        fmt.println(new_abs_path, locationpath)
    }
    return new_abs_path
}

Ajoutez simplement le chemin du fichier dans le répertoire où se trouve le fichier qui le référence.

Par exemple :

fmt.Println(getAbs("./bar.txt", "/foo")) //foo is the directory that text.txt is in which references bar.txt is in

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer