// 设置配置文件 func ReadConfig() error { root, err := path.GetStartupDir() if err != nil { return fmt.Errorf("获取起始目录失败:%s", err.Error()) } // 构造配置文件路径 filePath := filepath.Join(root, configFile) if !io.IsExists(filePath) { return fmt.Errorf("配置文件%s不存在", filePath) } // 读取文件 buffer, err := io.ReadAllBytes(filePath) if err != nil { return err } // 解析配置项 configValue = &Config{} err = json.Unmarshal(buffer, configValue) if err != nil { return err } if configValue == nil { return fmt.Errorf("配置文件错误") } return nil }
// getConfigFilePath 获取配置文件路径 func getConfigFilePath() (string, error) { if len(os.Args) > 1 { // 指定了配置文件 return os.Args[1], nil } // 获取启动路径,默认情况配置文件和执行文件放在同一目录 startupPath, err := path.GetStartupDir() if err != nil { return "", err } // 默认配置文件路径 return filepath.Join(startupPath, defaultConfigFileName), nil }
// 初始化配置文件 func Init() error { // 启动目录 startupDir, err := path.GetStartupDir() if err != nil { return err } // 构造配置文件路径 filePath := filepath.Join(startupDir, configFile) if !io.IsExists(filePath) { return fmt.Errorf("配置文件 %s 不存在", filePath) } // 读取文件 buffer, err := io.ReadAllBytes(filePath) if err != nil { return err } // 解析配置项 configValue = &Config{} err = json.Unmarshal(buffer, configValue) if err != nil { return err } if configValue == nil { return fmt.Errorf("配置文件错误") } // 数据目录不存在就创建 _, err = os.Stat(configValue.DataDir) if os.IsNotExist(err) { err = os.Mkdir(configValue.DataDir, 0666) if err != nil { return err } } return nil }