workingdirectory这工作目录的问题
来源:2-1 “云存储”系统原型之简单文件上传服务架构说明

Echo鑫
2019-03-23
老师这是我按照crontab那课老师直接go get github自己仓库后,设定的项目结构,然后我按照data,err := ioutil.ReadFile("./static/view/index.html") 这条语句,却无法读取到,然后我看一下我的工作目录,如下:
接着我按照一般项目结构,把工作目录换成了如下:
结果就可以成功访问到页面。两个基础的小疑问
- 为什么老师您这./static分别用的是相对路径,为什么却访问不到,更改工作目录后就可以访问到。
- Working directory的作用是什么?
1回答
-
同学你好,
用相对路径来读取工程内的资源文件时需要程序的当前执行路径和文件的相对路径的根目录要一致,
比如你的静态文件路径是 $GOPAH/src/github.com/liukunxin/filestore/static/view/index.html,
代码里加载这个文件的相对路径是 ./static/view/index.html
那么就需要你在 $GOPAH/src/github.com/liukunxin/filestore 这个目录下执行: go run main.go
此时$GOPAH/src/github.com/liukunxin/filestore就是程序运行的工作目录。
所以如果你的工作目录换成了你上面提到的$GOPAH, 在这个目录下执行go run main.go,
程序实际尝试加载的文件路径是 $GOPAH/static/view/index.html,
这样自然就找不到这个index.html了。
2. Working directory一般可指定为你的工程目录,比如你上面的$GOPAH/src/github.com/liukunxin/filestore,
这样IDE在编译(go build main.go)或运行(go run main.go)时,这个go命令就是在你指定的working directory下面执行的。
00
相似问题