为了账号安全,请及时绑定邮箱和手机立即绑定

如何在golang中覆盖文件内容

如何在golang中覆盖文件内容

Go
HUWWW 2022-06-06 15:32:11
我有一个名为 的空文件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)

    }

}


查看完整回答
反对 回复 2022-06-06
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

只需使用truncate方法并从头开始再次写入文件。


err = f.Truncate(0)

_, err = f.Seek(0, 0)

_, err = fmt.Fprintf(f, "%d", len(b))


查看完整回答
反对 回复 2022-06-06
?
隔江千里

TA贡献1906条经验 获得超10个赞

改用os.Create()

f, err := os.Create("test.txt")

从func的文档中:

Create 创建或截断命名文件。如果文件已存在,则将其截断。如果文件不存在,则创建...


查看完整回答
反对 回复 2022-06-06
  • 3 回答
  • 0 关注
  • 614 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号