节点中是否有类似“ path.resolve”的API?还是有什么可以做的?
例如(nodejs代码): path.resolve("~/sample.sh") 应该得到:/home/currentuser/sample.sh
path.resolve("~/sample.sh")
/home/currentuser/sample.sh
解决~(表示用户的家)是另一回事,通常是由外壳来解决。。
~
如果要通过Go代码执行此操作,则可以使用该user.Current()函数获取有关当前用户的详细信息,包括其主文件夹(即)User.HomeDir。但是,您仍然必须自己替换它。
user.Current()
User.HomeDir
原始答案如下。
您可以使用path.Join()或filepath.Join()。
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()“删除”点.和双点..。
path.Clean()
filepath.Clean()
.
..
您可以filepath.Abs()用来解析相对路径并获取绝对路径(如果不是绝对路径,则在工作目录之前)。filepath.Abs()也要求Clean()结果。
filepath.Abs()
Clean()
fmt.Println(filepath.Abs("/home/bob/../alice"))
/home/alice <nil>
在Go Playground上尝试示例。