我最近嘗試使用參數爲0的os.Truncate
在重寫一個修改後的版本之前清除文件的內容(我知道這是一個非常不安全的做法,但文件的內容對我來說並不重要)。Go os.Truncate()不重置文件光標
令我震驚的是截斷沒有重置文件的光標,所以當我寫回文件時,我最終得到一個帶有一堆空字符的前綴(對應於前一內容的大小) ,除非事先使用file.Seek(0, 0)
。
所以我的問題是:是語言的錯誤,是在執行該功能時被遺忘的東西,還是故意的,它是出於某種神祕原因的理想行爲?那可能是那個神祕的原因?
我使用去版本的linux go1.3.3/AMD64
你沒看過[文檔](https://golang.org/pkg/os/#File.Truncate)嗎?表示「它不會更改I/O偏移量」的部分。 –
現在你說,I/O offset在此刻沒有響鈴 – deb0ch