亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

項(xiàng)目場(chǎng)景:

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

問(wèn)題描述

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

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()
}

原因分析:

此分析未必正確,日后查到確切原因,再來(lái)補(bǔ)充。

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

解決方案:

添加os.O_TRUNC,清空文件。

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

總結(jié)

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

相關(guān)文章

最新評(píng)論