package config import ( "bufio" "bytes" "fmt" "strings" ) func SetXginiBuffer(configBuffer *bytes.Buffer, xginiMap map[string]string) { tmpBuffer := new(bytes.Buffer) writer := bufio.NewWriter(tmpBuffer) scanner := bufio.NewScanner(configBuffer) for scanner.Scan() { line := scanner.Text() for k, v := range xginiMap { if strings.Contains(line, k) { parts := strings.SplitN(line, "=", 2) if len(parts) == 2 { newLine := strings.TrimSpace(parts[0]) + "= " + v + ";" line = fmt.Sprint(" " + newLine) break // 停止继续处理该行 } } } _, err := writer.WriteString(line + "\n") if err != nil { fmt.Println(err) return } } err := writer.Flush() if err != nil { fmt.Println(err) return } // 使用 tmpBuffer 中的内容更新 configBuffer configBuffer.Reset() _, err = configBuffer.ReadFrom(tmpBuffer) if err != nil { fmt.Println(err) return } //fmt.Println("配置文件已成功更新。") } func GetXginiValue(buffer *bytes.Buffer, key string) (string, error) { scanner := bufio.NewScanner(buffer) for scanner.Scan() { line := scanner.Text() if strings.Contains(line, key) { parts := strings.Split(line, "=") if len(parts) > 1 && strings.TrimSpace(parts[0]) == key { valuePart := strings.Split(parts[1], ";") if len(valuePart) > 0 { return strings.TrimSpace(valuePart[0]), nil } } } } if err := scanner.Err(); err != nil { return "", err } return "", fmt.Errorf("未查找到xugu.ini %s 字段,key not found", key) }