欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

golang文件內(nèi)容覆蓋問題的分析及解決

 更新時間:2024年01月14日 09:53:55   作者:小鎮(zhèn)學(xué)者  
通過golang讀取數(shù)據(jù)庫站點映射配置,生成nginx conf文件,并檢查和重啟nginx服務(wù),已達到站點自動化部署目的,當(dāng)目標(biāo)文件中內(nèi)容很長,而寫入的內(nèi)容很短時,目標(biāo)文件內(nèi)容無法完全覆蓋,本文給大家介紹了解決方法,需要的朋友可以參考下

項目場景:

通過golang讀取數(shù)據(jù)庫站點映射配置,生成nginx conf文件,并檢查和重啟nginx服務(wù),已達到站點自動化部署目的。

問題描述

當(dāng)目標(biāo)文件中內(nèi)容很長,而寫入的內(nèi)容很短時,目標(biāo)文件內(nèi)容無法完全覆蓋。

package main

import (
	"os"
)

func ConfWrite() error {
	config := confTemplate()
	fileName := "/Users/test/Documents/test.txt"
	f, err := os.OpenFile(fileName, os.O_CREATE|os.O_RDWR, 0666)
	if err != nil {
		return err
	}

	defer f.Close()
	if _, err = f.WriteString(config); err != nil {
		return err
	}
	return nil
}

func confTemplate() string {
	return `
    <<listenPort>>

	server
    {
        listen 80;
        listen 443 ssl;
        server_name xxx.com;
        location / {
                <<proxyPass>>
                root /data/test;
        }
    }`
}

func main() {
	_ = ConfWrite()
}

原因分析:

此分析未必正確,日后查到確切原因,再來補充。

os.OpenFile(fileName, os.O_CREATE|os.O_RDWR, 0666) 此函數(shù)打開文件時,緩沖區(qū)的長度由原文件的內(nèi)容決定。如果使用f.WriteString(str) 寫入的str內(nèi)容比原文件緩沖區(qū)的長度短,則原文件尾部的部分內(nèi)容會保留。并未實現(xiàn)完全覆蓋的效果。如果str內(nèi)容比原文件緩沖區(qū)的長度長,則原文件會被完全覆蓋。

解決方案:

添加os.O_TRUNC,清空文件。

os.OpenFile(fileName, os.O_CREATE|os.O_RDWR|os.O_TRUNC, 0666)

總結(jié)

到此這篇關(guān)于golang文件內(nèi)容覆蓋問題的分析及解決的文章就介紹到這了,更多相關(guān)golang文件內(nèi)容覆蓋內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論