美文网首页
Go语言实现更改文件内容

Go语言实现更改文件内容

作者: droid_zf | 来源:发表于2018-07-09 17:46 被阅读80次

    思路

    读取文件,将需要更改的内容追加或替换,再写入文件。

    实现更改文件中内容

    现在有一个html文件,其中包含如下内容

    <meta name="testkey" content="hello world" />
    
    将hello world更改成需要的字符

    导入包

    import (
        "bufio"
        "fmt"
        "io"
        "log"
        "net/http"
        "os"
        "strings"
    )
    
    

    读写文件

    读文件

    f, err := os.Open("index.html")
        if err != nil {
            return err
        }
        buf := bufio.NewReader(f)
        var rep = []string{"<meta name=\"testkey\" content=\"", arg1, "\" /> "}
        var result = ""
        for {
            a, _, c := buf.ReadLine()
            if c == io.EOF {
                break
            }
            if strings.Contains(string(a), "baidu-site-verification") {
                result += strings.Join(rep, "") + "\n"
            } else {
                result += string(a) + "\n"
            }
        }
    

    写文件(覆盖)

    fw, err := os.OpenFile("index.html", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)//os.O_TRUNC清空文件重新写入,否则原文件内容可能残留
        w := bufio.NewWriter(fw)
        w.WriteString(result)
        if err != nil {
            panic(err)
        }
        w.Flush()
    

    实现一个简单的http接口

    func replace(w http.ResponseWriter, r *http.Request) {
        r.ParseForm()
        var arg1 string = r.FormValue("p1")//参数key
        ReadLine("index.html", arg1)
        fmt.Fprintf(w, "success") //返回结果
    }
    
    func main() {
        http.HandleFunc("/replace", replace)     //设置访问的路由
        err := http.ListenAndServe(":9090", nil) //设置监听的端口
        if err != nil {
            log.Fatal("ListenAndServe: ", err)
        }
    }
    

    编译

    编译本机运行

    go build
    

    交叉编译linux运行

    CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
    

    相关文章

      网友评论

          本文标题:Go语言实现更改文件内容

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