私はio/ioutil
小さなテキストファイルを読むために使用しています:
fileBytes, err := ioutil.ReadFile("/absolute/path/to/file.txt")
それは問題なく動作しますが、これは正確には移植可能ではありません。私の場合、開きたいファイルは GOPATH にあります。次に例を示します。
/Users/matt/Dev/go/src/github.com/mholt/mypackage/data/file.txt
data
フォルダーはソース コードのすぐそばにあるので、相対パスを指定するだけで十分です。
data/file.txt
しかし、その後、次のエラーが発生します。
パニック: data/file.txt を開きます: そのようなファイルまたはディレクトリはありません
特にGoコードと一緒にある場合、相対パスを使用してファイルを開くにはどうすればよいですか?
(私の質問は、具体的には GOPATH に関連するファイルを開くことに関するものであることに注意してください。Goで相対パスを使用してファイルを開くのは、絶対パスの代わりに相対パスを指定するのと同じくらい簡単です。ファイルは、コンパイルされたバイナリの作業ディレクトリに対して相対的に開かれます。その場合、バイナリがコンパイルされた場所に関連するファイルを開きたい.後から考えると、これは悪い設計上の決定です.)