猿问

如何在golang中覆盖文件内容

我有一个名为 的空文件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?

    }


HUWWW
浏览 616回答 3
3回答

大话西游666

你也可以试试:os.OpenFile带有自定义标志来截断文件,如下所示package mainimport (    "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)    }}

白猪掌柜的

只需使用truncate方法并从头开始再次写入文件。err = f.Truncate(0)_, err = f.Seek(0, 0)_, err = fmt.Fprintf(f, "%d", len(b))

隔江千里

改用os.Create():f, err := os.Create("test.txt")从func的文档中:Create 创建或截断命名文件。如果文件已存在,则将其截断。如果文件不存在,则创建...
随时随地看视频慕课网APP

相关分类

Go
我要回答