Ich verwende io/ioutil
, um eine kleine Textdatei zu lesen:
fileBytes, err := ioutil.ReadFile("/absolute/path/to/file.txt")
Und das funktioniert gut, aber das ist nicht gerade tragbar. In meinem Fall befinden sich die Dateien, die ich öffnen möchte, in meinem GOPATH, zum Beispiel:
/Users/matt/Dev/go/src/github.com/mholt/mypackage/data/file.txt
Da der data
Ordner direkt neben dem Quellcode angezeigt wird, möchte ich nur den relativen Pfad angeben:
data/file.txt
Aber dann bekomme ich diesen Fehler:
Panik: Öffnen Sie data / file.txt: Keine solche Datei oder kein solches Verzeichnis
Wie kann ich Dateien über ihren relativen Pfad öffnen, insbesondere wenn sie neben meinem Go-Code gespeichert sind?
( Beachten Sie, dass es bei meiner Frage speziell um das Öffnen von Dateien relativ zum GOPATH geht. Das Öffnen von Dateien mit einem beliebigen relativen Pfad in Go ist so einfach wie das Angeben des relativen Pfads anstelle eines absoluten Pfads. Dateien werden relativ zum Arbeitsverzeichnis der kompilierten Binärdatei geöffnet In diesem Fall möchte ich Dateien öffnen, die sich darauf beziehen, wo die Binärdatei kompiliert wurde. Im Nachhinein ist dies eine schlechte Entwurfsentscheidung.)