修改配置文件读取跟保存的方法
This commit is contained in:
@@ -2,6 +2,7 @@ package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
|
||||
"gopkg.in/yaml.v3"
|
||||
@@ -44,16 +45,17 @@ func DefaultAppConfig() *AppConfig {
|
||||
func LoadConfig(path string) (*AppConfig, error) {
|
||||
cfg := DefaultAppConfig()
|
||||
|
||||
data, err := os.ReadFile(path)
|
||||
f, err := os.Open(path)
|
||||
if err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
// 配置文件不存在,返回默认配置
|
||||
return cfg, nil
|
||||
}
|
||||
return nil, fmt.Errorf("读取配置文件失败: %w", err)
|
||||
return nil, fmt.Errorf("打开配置文件失败: %w", err)
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
if err := yaml.Unmarshal(data, cfg); err != nil {
|
||||
if err := yaml.NewDecoder(f).Decode(cfg); err != nil && err != io.EOF {
|
||||
return nil, fmt.Errorf("解析配置文件失败: %w", err)
|
||||
}
|
||||
|
||||
@@ -62,14 +64,17 @@ func LoadConfig(path string) (*AppConfig, error) {
|
||||
|
||||
// SaveConfig 将配置保存到指定路径
|
||||
func SaveConfig(path string, cfg *AppConfig) error {
|
||||
data, err := yaml.Marshal(cfg)
|
||||
f, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o644)
|
||||
if err != nil {
|
||||
return fmt.Errorf("序列化配置失败: %w", err)
|
||||
return fmt.Errorf("创建配置文件失败: %w", err)
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
if err := os.WriteFile(path, data, 0o644); err != nil {
|
||||
enc := yaml.NewEncoder(f)
|
||||
enc.SetIndent(2)
|
||||
if err := enc.Encode(cfg); err != nil {
|
||||
return fmt.Errorf("写入配置文件失败: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
return enc.Close()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user