2017-06-07 43 views
3

文件時截斷其作用似乎要增加額外的零個字節到啓動文件:截斷在golang

configFile, err := os.OpenFile("./version.json", os.O_RDWR, 0666) 
defer configFile.Close() 
check(err) 
//some actions happen here 
configFile.Truncate(0) 
configFile.Write(js) 
configFile.Sync() 

因此,該文件有我在開始時的0字節的部分寫的內容。

如何在沒有前導零的情況下截斷並完全重寫文件?

+3

什麼是「一些行動」?在調用'Truncate'之前你是否想回到'(0,0)'? (不相關的,你不能在檢查錯誤之前推遲,否則如果有錯誤,你會驚慌失措。而且,看起來像「checkError(error)」的東西在Go中通常不是一個好的模式)。 – JimB

+0

不,我不是。感謝提示,對於新手來說非常有用:) –

回答

4

參見Truncate文件:

截斷更改文件的大小。 它不會更改I/O偏移量。如果有錯誤,它將是* PathError類型。

所以你還需要尋求到文件的開頭你寫之前:

configFile.Truncate(0) 
configFile.Seek(0,0) 
+0

好點,會檢查出來。考慮到截斷功能類似於php的工作。猜猜這是問題 –

+0

是的,這是它!感謝提示。 –