web-dev-qa-db-ja.com

Goでクロスプラットフォームのファイルパスを作成するにはどうすればよいですか?

特定のファイルを開きたい"directory/subdirectory/file.txt" golangで。 OSに依存しない方法でそのようなパスを表現するための推奨される方法は何ですか(つまり、Windowsのバックスラッシュ、MacおよびLinuxのスラッシュ)。 Pythonのos.pathモジュール?

49
Jjed

OS固有のパスを直接作成および操作するには、 _os.PathSeparator_ および _path/filepath_ パッケージを使用します。

別の方法は、プログラム全体で常に_'/'_および path パッケージを使用することです。 pathパッケージは、OSに関係なく、パス区切り文字として_'/'_を使用します。ファイルを開くまたは作成する前に、 filepath.FromSlash(path string) を呼び出して、/-で区切られたパスをOS固有のパス文字列に変換します。 OSから返されたパスは、 filepath.ToSlash(path string) を呼び出すことにより、/-で区切られたパスに変換できます。

46
user811773

使用する - path/filepathpath ではなく。 pathは、スラッシュで区切られたパス(URLで使用されるパスなど)のみを対象としていますが、path/filepathは、異なるオペレーティングシステム全体のパスを操作します。

21
Evan Shaw

@EvanShawと このブログ の回答に基づいて、次のコードが作成されました。

package main

import (
    "fmt"
    "os"
    "path/filepath"
)

func main() {
    p := filepath.FromSlash("path/to/file")
    fmt.Println("Path: " + p)
}

戻り値:

Path: path\to\file

windowsで。

9
030

Goはスラッシュ(/)すべてのプラットフォームでの汎用セパレータとして [1]"directory/subdirectory/file.txt"は、ランタイムオペレーティングシステムに関係なく正しく開かれます。

0
Jjed