Go操作ini文件
除了采用json,yaml等格式之外,常用的配置文件还有ini格式的。
1 cfg, err := ini.Load(fyPath + "\\ServerSystem.ini") // need confirm which ini file. 2 if err != nil { 3 fmt.Printf("Fail to read file: %v", err) 4 fmt.Fprintf(w, "{\"msg\":\"%s\"}", err.Error()) 5 return false, err 6 } 7 // sa password write by clear text 8 clFlag := cfg.Section("DBServer").Key("User").String() 9 // rs, _ := utf8.DecodeRuneInString(clFlag) 10 utf8 := mahonia.NewDecoder("gbk").ConvertString(clFlag) 11 fmt.Println(utf8) 12 sc, _ := cfg.NewSection("abc") 13 sk, _ := sc.NewKey("test", mahonia.NewEncoder("gbk").ConvertString("1ar三郎123")) // ini file is ansi code.so convert... 14 cfg.Section("DBServer").Key("Name").SetValue(conf.ServerIP) 15 cfg.Section("DBServer").Key("Key").SetValue(conf.Sapass) // post sapass maybe encrypted,so need decrypt perhaps first,then write to ini file. 16 cfg.SaveTo(fyPath + "\\ServerSystem.ini") 17 fmt.Println(sk) 18 // D7 platform need web port to check,so write ServCfg.ini to save webport and make active flag. 19 cfg, err = ini.Load(fyPath + "\\ServCfg.ini") 20 cfg.Section("Serv").Key("WebPort").SetValue(strconv.Itoa(conf.Httpport)) 21 cfg.Section("Serv").Key("WebActive").SetValue(strconv.FormatBool(conf.Remember)) // need confirm active key's name. 22 cfg.SaveTo(fyPath + "\\ServCfg.ini")
使用到了
"github.com/axgle/mahonia"
"github.com/go-ini/ini"
两个包。
一定注意编码格式,避免乱码。