Golang:如何解析文件名参数?

时间:2015-01-13 09:00:10

标签: go

我在golang中编写一个命令行实用程序,它以文件作为参数。如何准确地将此参数转换为可用文件?似乎有很多情况需要处理:

  • 已经给出了绝对路径,我应该按原样使用
  • 已经给出了相对路径,我应该路径。用当前工作目录加入()它
  • “。”和“../”用于路径,我相信我仍然应该使用path.Join()和Go会简化路径吗?

Go会提供什么来处理这个问题吗?我应该根据第一个字符是否为“/”进行分支吗?这似乎是一个hacky解决方案,但也许它总是有效,所以应该这样做?

3 个答案:

答案 0 :(得分:1)

操作系统为您解释路径。您不需要对路径名执行任何操作。你可以简单地做这样的事情:

os.Open("./path/to/file")
os.Open("another/file")
os.Open("../some_file")

等等

答案 1 :(得分:0)

撇开你不想将.视为文件,不用担心。

在可信环境*中,用户确实可以指向任何文件,os包将负责处理。无需filepath.Join任何事情。

  • 如果给出绝对路径,它将打开它。 (即:以/开头)
  • 如果没有,那么它将相对于当前工作目录看到它。 (包括../

(*)在不受信任的环境(例如Web服务器)中,您需要验证为授权指定的路径。

答案 2 :(得分:0)

操作系统为您努力工作。但是传递的参数可以对应一个目录。您应该检查os.FileInfo.IsDir,或者path.filepath.WalkFunc()执行path.filepath.Walk()批处理操作。后者是一种非常常见的方法。