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

Jje*_*jed 51 directory io file go

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

小智 47

对于创建和操作特定于OS的路径,直接使用os.PathSeparatorpath/filepath包.

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


Eva*_*haw 22

path/filepath而不是path.path仅用于正斜杠分隔的路径(例如URL中使用的路径),同时path/filepath操纵不同操作系统的路径.

  • 必须标记为正确答案,更容易理解 - 只需在任何地方使用文件路径......利润! (5认同)

030*_*030 10

根据@EvanShaw和本博客的答案,创建了以下代码:

package main

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

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

收益:

Path: path\to\file
Run Code Online (Sandbox Code Playgroud)

在Windows上.