一尘不染

如何在golang中解析相对路径到绝对路径?

go

节点中是否有类似“ path.resolve”的API?还是有什么可以做的?

例如(nodejs代码): path.resolve("~/sample.sh") 应该得到:/home/currentuser/sample.sh


阅读 999

收藏
2020-07-02

共1个答案

一尘不染

解决~(表示用户的家)是另一回事,通常是由外壳来解决。。

如果要通过Go代码执行此操作,则可以使用该user.Current()函数获取有关当前用户的详细信息,包括其主文件夹(即)User.HomeDir。但是,您仍然必须自己替换它。

原始答案如下。


您可以使用path.Join()filepath.Join()

例如:

base := "/home/bob"
fmt.Println(path.Join(base, "work/go", "src/github.com"))

输出:

/home/bob/work/go/src/github.com

您可以使用path.Clean()和从路径中filepath.Clean()“删除”点.和双点..

您可以filepath.Abs()用来解析相对路径并获取绝对路径(如果不是绝对路径,则在工作目录之前)。filepath.Abs()也要求Clean()结果。

例如:

fmt.Println(filepath.Abs("/home/bob/../alice"))

输出:

/home/alice <nil>

Go Playground上尝试示例。

2020-07-02