我有一个使用config.json文件的Go应用程序来获取一些信息.当go run main.go它做它的工作,但当我将应用程序编译成可执行文件时,我有错误open config.json: no such file or directory.
我的代码是:
func main() {
data, err := ioutil.ReadFile("./config.json")
check(err)
var config config
err = json.Unmarshal(data, &config)
check(err)
}
Run Code Online (Sandbox Code Playgroud)
我也尝试了ioutil.ReadFile("config.json"),但它不起作用.check(err)并且config结构在main.go,问题不是来自这里.
main.go,config.json可执行文件位于同一目录中.
config.json编译程序后,如何才能使用该文件?
您的配置文件可能不在您启动应用程序的工作目录中.但是硬编码文件的路径并不是最好的做法.
使用该flag包将路径作为命令行标志传递给配置文件:
var filename = flag.String("config", "config.json", "Location of the config file.")
func main() {
flag.Parse()
data, err := ioutil.ReadFile(*filename)
check(err)
var config config
err = json.Unmarshal(data, &config)
check(err)
}
Run Code Online (Sandbox Code Playgroud)
使用./application -config=/path/to/config.json(取决于您的平台)启动应用程序.
使用该os包读取系统环境中的路径.
func main() {
filename := os.Getenv("PATH_TO_CONFIG")
if filename == "" {
filename = "config.json"
}
data, err := ioutil.ReadFile(filename)
check(err)
var config config
err = json.Unmarshal(data, &config)
check(err)
}
Run Code Online (Sandbox Code Playgroud)
设置环境变量export PATH_TO_CONFIG=/path/to/config.json(取决于您的平台)并启动应用程序.
config.json如果没有为应用程序提供路径,这两种方法都将尝试在工作目录中查找.
| 归档时间: |
|
| 查看次数: |
3061 次 |
| 最近记录: |