Go如何打开文件?

我用Iris版本12构建了一个Go Web项目,现在有一个名为,我可以通过包含的文件夹中的shell脚本输出,但是去注意我。

该文件夹的结构如下:config.goconfig.jsoncat ../config.jsonconfig.gopanic: open ../config.json: no such file or directory


.

├── config

│   └── config.go

├── config.json

├── config.yml

├── controller

├── datasource

├── go.mod

├── go.sum

├── main.go

├── model

│   └── user.go

├── service

├── static

│   ├── css

│   │   └── app.85873a69abe58e3fc37a13d571ef59e2.css

│   ├── favicons

│   │   └── favicon.ico

│   ├── fonts

│   │   └── element-icons.b02bdc1.ttf

│   ├── img

│   │   └── default.jpg

│   ├── index.html

│   └── js

│       ├── 0.6e924665f4f8679a8f0b.js

└── util

附言我还尝试了在shell中可用,在Go中不可用。./../config.json


具体如下:config.go


package config


import (

    "encoding/json"

    "os"

)


type AppConfig struct {

    AppName    string `json:"app_name"`    // Project name

    Port       int    `json:"port"`        // Server port

    StaticPath string `json:"static_path"` // The path of static resources

    Mode       string `json:"mode"`        // Development mode

}


func InitConfig() *AppConfig {

    file, err := os.Open("../config.json")

    if err != nil {

        panic(err.Error())

    }


    decoder := json.NewDecoder(file)

    conf := AppConfig{}

    err = decoder.Decode(&conf)

    if err != nil {

        panic(err.Error())

    }


    return &conf

}


侃侃无极
浏览 247回答 2
2回答

桃花长相依

相对路径始终相对于正在运行的进程的当前工作目录(不一定是可执行文件的目录)。它与原始源文件的位置无关。要调试您的问题,您可以在尝试读取配置文件之前尝试打印出当前工作目录:cwd, err := os.Getwd()if err != nil {    log.Fatal(err)}fmt.Println(cwd)然后,给定的相对路径将添加到该路径中。os.Open()如果您从存储库的根目录运行程序,那么配置的正确路径将很简单(除非您通过调用来更改代码中某个位置的工作目录)。os.Open("config.json")os.Chdir()

守着一只汪

只需从文件路径中删除即可。如果您在项目目录的根目录中有文件 - 只需使用文件名即可从项目中的每个位置访问它。../func InitConfig() *AppConfig {     file, err := os.Open("config.json") }项目结构:结果:main.go:package mainimport (    "fmt"    "scripts/playground/config")func main() {    cfg := config.InitConfig()    fmt.Printf("%+v", cfg)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go