美文网首页
golang实现配置文件修改

golang实现配置文件修改

作者: 蒙浩 | 来源:发表于2020-08-06 10:21 被阅读0次

我们在使用golang的场景中,经常会有修改某个配置文件的需求,那么怎么处理呢?
下面我用一个例子给大家演示一下:
现在,我有一个连接数据库的配置文件如下(配置文件路径为ConfigPath):

[Config]
address = localhost
port = 9527
dbname = XXX

如果我要修改这几个参数,那么可以使用下面函数处理:

func ChangeTestConfig(address, port ,dbname string) error{
    file, err:= os.OpenFile(ConfigPath, os.O_RDWR, 0666)
    if err != nil {
        glog.Error("open config file fail, err: ", err)
        return err
    }
    defer file.Close()

    buf := bufio.NewReader(file)
    output := make([]byte, 0)
    for {
        line, _, c := buf.ReadLine()
        if c == io.EOF {
            break
        }
        if strings.Contains(string(line),"address"){
            newline := "address = " + address
            line = []byte(newline)
        }
        if strings.Contains(string(line),"port"){
            newline := "port = " + port
            line = []byte(newline)
        }
        if strings.Contains(string(line),"dbname"){
            newline := "dbname = " + dbname
            line = []byte(newline)
        }
        output = append(output, line...)
        output = append(output, []byte("\n")...)
    }

    if err := writeToFile(ConfigPath ,output);err != nil{
        glog.Errorf("write config file err: %v", err)
        return err
    }
    return nil
}

func writeToFile(filePath string, outPut []byte) error {
    f, err := os.OpenFile(filePath, os.O_WRONLY|os.O_TRUNC, 0600)
    defer f.Close()
    if err != nil {
        return err
    }
    writer := bufio.NewWriter(f)
    _, err = writer.Write(outPut)
    if err != nil {
        return err
    }
    writer.Flush()
    return nil
}

是不是很简单,喜欢的点个赞吧~~

相关文章

网友评论

      本文标题:golang实现配置文件修改

      本文链接:https://www.haomeiwen.com/subject/sfhzrktx.html