Heim  >  Artikel  >  Backend-Entwicklung  >  Gibt es eine Funktion, die einen absoluten Pfad von einem Pfad relativ zu einem anderen zurückgibt?

Gibt es eine Funktion, die einen absoluten Pfad von einem Pfad relativ zu einem anderen zurückgibt?

PHPz
PHPznach vorne
2024-02-05 23:15:081174Durchsuche

Gibt es eine Funktion, die einen absoluten Pfad von einem Pfad relativ zu einem anderen zurückgibt?

Frageninhalt

Ich muss anhand der in verschiedenen Dateien verwendeten Pfade bestimmen können, wo sich eine Datei befindet. Vielleicht ist es besser, ein Beispiel zu verwenden:

Das ist die Verzeichnisstruktur:

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

In der Datei text.txt ist bar.txt ./bar.txt引用,它可以工作,但是如果我尝试使用filepath.abs​​("从main.go找到<code>./bar.txt的绝对路径./bar.txt") 那么它将返回 /bar/bar.txt, da davon ausgegangen wird, dass es sich um das aktuelle Arbeitsverzeichnis handelt.

Aus der Dokumentation: abs gibt die absolute Darstellung des Pfades zurück. Wenn der Pfad nicht absolut ist, wird er mit dem aktuellen Arbeitsverzeichnis verkettet, um ihn in einen absoluten Pfad umzuwandeln.

Meine Frage ist, wie ich den absoluten Pfad von ./bar.txt erhalte, wenn es ./bar.txt./bar.txt ist. Bezieht sich auf text.txt.

Tut mir leid, diese Frage ist vielleicht zu komplex, aber ich kann mir keinen besseren Weg vorstellen, ein Beispiel zu zeigen.


Richtige Antwort


Diese Antwort ist fast fertig, aber ich habe es geschafft, sie an meine Bedürfnisse anzupassen.

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
}

Fügen Sie einfach den Pfad zur Datei zu dem Verzeichnis hinzu, in dem sich die Datei befindet, die darauf verweist.

Zum Beispiel:

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

Das obige ist der detaillierte Inhalt vonGibt es eine Funktion, die einen absoluten Pfad von einem Pfad relativ zu einem anderen zurückgibt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen