猿问

结合绝对路径和相对路径以获得新的绝对路径

我正在编写一个程序,其中的一个组件必须能够采用给定的路径(例如/help/index.html或/help/)和基于该位置的相对路径(例如../otherpage/index.html或sub/dir/of/help/或help2.html)并产生绝对路径由相对路径暗示。考虑以下目录树。


/

index.html

content.txt

help/

    help1.html

    help2.html

该文件index.html包含一个链接,如help/help1.html。程序通过/或/index.html,并将其与help/help1.htmlget组合/help/help1.html。


同样,该文件/help/help1.html具有链接../content.txt,程序需要从该链接返回/content.txt。有合理的方法可以做到这一点吗?


谢谢你。:)


编辑:谢谢斯蒂芬·温伯格!对于未来的每个人,这是我使用的代码。


func join(source, target string) string {

    if path.IsAbs(target) {

        return target

    }

    return path.Join(path.Dir(source), target)

}


ibeautiful
浏览 163回答 2
2回答

莫回无

Stephen的回答是正确的,但我想添加一些内容以节省将来的读者一些时间:您应该注意路径包中的函数假定分隔符为/。使用上面的示例时,.由于使用的Windows的文件路径,因此我一直获取输出\。如果您不操作URL,请考虑使用使用操作系统目录分隔符的文件路径包。例如,在Windows上运行时:path.Dir("C:\\Users\\Darren\\Desktop\\file.txt")filepath.Dir("C:\\Users\\Darren\\Desktop\\file.txt")返回值:.C:\Users\Darren\Desktop
随时随地看视频慕课网APP

相关分类

Go
我要回答