如何在Go中创建跨平台文件路径?

时间:2012-02-21 01:47:07

标签: file io directory go

我想在golang中打开一个给定的文件"directory/subdirectory/file.txt"。以OS无关的方式表达这种路径的推荐方法是什么(即Windows中的反斜杠,Mac和Linux中的正斜杠)?像Python的os.path模块?

4 个答案:

答案 0 :(得分:45)

要创建和操作特定于操作系统的路径,请直接使用os.PathSeparatorpath/filepath包。

另一种方法是在整个程序中始终使用'/'path包。无论操作系统如何,path包都使用'/'作为路径分隔符。在打开或创建文件之前,请通过调用filepath.FromSlash(path string)将/ -separated路径转换为特定于操作系统的路径字符串。可以通过调用filepath.ToSlash(path string)将操作系统返回的路径转换为/ -separated路径。

答案 1 :(得分:21)

使用path/filepath代替pathpath仅用于正斜杠分隔的路径(例如URL中使用的路径),而path/filepath则操纵不同操作系统的路径。

答案 2 :(得分:8)

根据@EvanShaw和this blog的答案,创建了以下代码:

package main

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

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

返回:

Path: path\to\file
在Windows上

答案 3 :(得分:0)

Go将正斜杠(/)视为所有平台[1]的通用分隔符。无论运行时操作系统如何,都将正确打开"directory/subdirectory/file.txt"