修改配置文件读取跟保存的方法

This commit is contained in:
zyj
2026-03-05 13:39:11 +08:00
parent f6d7e24503
commit 9a2835df2f

View File

@@ -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()
}