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

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 ( import (
"fmt" "fmt"
"io"
"os" "os"
"gopkg.in/yaml.v3" "gopkg.in/yaml.v3"
@@ -44,16 +45,17 @@ func DefaultAppConfig() *AppConfig {
func LoadConfig(path string) (*AppConfig, error) { func LoadConfig(path string) (*AppConfig, error) {
cfg := DefaultAppConfig() cfg := DefaultAppConfig()
data, err := os.ReadFile(path) f, err := os.Open(path)
if err != nil { if err != nil {
if os.IsNotExist(err) { if os.IsNotExist(err) {
// 配置文件不存在,返回默认配置 // 配置文件不存在,返回默认配置
return cfg, nil 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) return nil, fmt.Errorf("解析配置文件失败: %w", err)
} }
@@ -62,14 +64,17 @@ func LoadConfig(path string) (*AppConfig, error) {
// SaveConfig 将配置保存到指定路径 // SaveConfig 将配置保存到指定路径
func SaveConfig(path string, cfg *AppConfig) error { 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 { 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 fmt.Errorf("写入配置文件失败: %w", err)
} }
return nil return enc.Close()
} }