我有一个名为 的空文件a.txt,我想循环输出一个 value(int) 给它,并覆盖 file 中的最后一个内容a.txt。例如, // open a file f, err := os.Open("test.txt") if err != nil { log.Fatal(err) } defer f.Close() // another file af, err := os.OpenFile("a.txt", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644) if err != nil { log.Fatal(err) } defer af.Close() b := []byte{} scanner := bufio.NewScanner(f) for scanner.Scan() { b = append(b, scanner.Bytes()...) // how to output len(b) into a.txt? }
3 回答

大话西游666
TA贡献1817条经验 获得超14个赞
你也可以试试:
os.OpenFile带有自定义标志来截断文件,如下所示
package main
import (
"log"
"os"
)
func main() {
f, err := os.OpenFile("notes.txt", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0755)
if err != nil {
log.Fatal(err)
}
if err := f.Close(); err != nil {
log.Fatal(err)
}
}

白猪掌柜的
TA贡献1893条经验 获得超10个赞
只需使用truncate方法并从头开始再次写入文件。
err = f.Truncate(0)
_, err = f.Seek(0, 0)
_, err = fmt.Fprintf(f, "%d", len(b))

隔江千里
TA贡献1906条经验 获得超10个赞
改用os.Create()
:
f, err := os.Create("test.txt")
从func的文档中:
Create 创建或截断命名文件。如果文件已存在,则将其截断。如果文件不存在,则创建...
- 3 回答
- 0 关注
- 614 浏览
添加回答
举报
0/150
提交
取消