我可以强制filepath.Abs​​为另一个操作系统提供deisgned路径吗?

时间:2017-06-02 14:13:57

标签: go filepath

我目前正在使用Windows。我使用以下代码获取相对路径的绝对路径。

absolutePath, err := filepath.Abs(relativePath)

此输出为C:\project\test。有什么方法可以"技巧" filepath.Abs拥有Linux样式的绝对路径,无论是/project/test还是/d/project/test/?谢谢!

1 个答案:

答案 0 :(得分:1)

正如@JimB所指出的,将相对路径转换为绝对路径不仅是特定于操作系统的,而是特定于上下文的:不同系统上的相同路径(无论操作系统如何)都可以产生不同的路径;实际上,即使在相同的系统上,相对于来自不同工作目录的绝对值的转换也可以产生不同的路径。再次@JimB指出,您可以使用path.Clean删除任何不必要的或reduntant相对路径组件(例如将/dir/../otherDir/./subDir/转换为/otherDir/subDir/),但这是最接近你的任何东西上下文敏感的。

如果您只想转换表示,那么filepath.ToSlash将使用正斜杠替换所有特定于平台的分隔符。如果您尝试重新使用跨系统的路径,可以在输入上运行ToSlash,使用正斜杠存储“通用”路径,然后在目标系统上使用filepath.FromSlash进行转换返回特定于平台的路径分隔符。