From 9a2835df2f9463978d266de108dd1eb9c39f661e Mon Sep 17 00:00:00 2001 From: zyj Date: Thu, 5 Mar 2026 13:39:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=85=8D=E7=BD=AE=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=AF=BB=E5=8F=96=E8=B7=9F=E4=BF=9D=E5=AD=98=E7=9A=84?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/config/config.go | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/internal/config/config.go b/internal/config/config.go index efebcea..9afd842 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -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() }