首页 > 解决方案 > 从新创建的文件中读取

问题描述

我想在新创建的文件上写一些东西

package main

import (
    "fmt"
    "io/ioutil"
    "os"
)

func main() {
    f, _ := os.Create("temp.txt")

    contents := "some stuff..."

    f.WriteString(contents) // <--------
    f.Sync()

    //f.Close()
    //f, _ = os.Open("temp.txt")

    b, _ := ioutil.ReadAll(f)
    fmt.Println(string(b))  // <--------
}

但是在写了一些东西然后阅读之后,最后一行什么也没打印。为什么?

如果我取消注释上面的这两行,一切正常!

标签: go

解决方案


当您读取或写入文件时,您会移动当前位置,因此它会从您离开的位置继续读取/写入。只有一个位置,所以如果你先写然后读,你会在写完之后从剩下的地方开始读。

用于f.Seek(0,0)在写入后将位置移动到文件的开头。


推荐阅读