在 Go 中写入数据后从临时文件读取数据
在 Go 中,使用 ioutil.TempFile 创建临时文件允许写入文件。然而,随后从文件中读取数据可能会遇到挑战,因为写入时文件指针会移至文件末尾。
为了解决这个问题,解决方案是将文件指针重置为文件开头写入后,启用数据读取。这可以使用 *os.File 类型的 Seek 方法来实现。此外,建议使用 defer 关闭文件,以确保资源的正确释放。
下面是一个演示正确实现的示例:
import ( "bufio" "fmt" "io/ioutil" "log" "os" "path/filepath" ) func main() { tmpFile, err := ioutil.TempFile("", fmt.Sprintf("%s-", filepath.Base(os.Args[0]))) if err != nil { log.Fatal("Could not create temporary file", err) } defer tmpFile.Close() fmt.Println("Created temp file:", tmpFile.Name()) fmt.Println("Writing some data to the temp file") if _, err := tmpFile.WriteString("test data"); err != nil { log.Fatal("Unable to write to temporary file", err) } else { fmt.Println("Data should have been written") } fmt.Println("Trying to read the temp file now") // Seek the pointer to the beginning tmpFile.Seek(0, 0) s := bufio.NewScanner(tmpFile) for s.Scan() { fmt.Println(s.Text()) } if err := s.Err(); err != nil { log.Fatal("error reading temp file", err) } }
通过合并这些修改,程序写入临时文件后可以可靠地从临时文件中读取数据。
以上是Go中写入临时文件后如何读取数据?的详细内容。更多信息请关注PHP中文网其他相关文章!