在需要分步写入整条信息时做回滚操作时使用
代码语言:javascript复制/*
* @Description:
* @Author: gphper
* @Date: 2021-11-06 20:11:56
*/
package main
import (
"fmt"
"io"
"log"
"os"
)
func main() {
f, err := os.OpenFile(`file.txt`, os.O_RDWR, os.ModePerm)
if err != nil {
log.Fatal(err)
}
initSize, err := f.Seek(0, io.SeekEnd)
if err != nil {
log.Fatal(err)
}
fmt.Println(initSize)
//模拟出错时出错时
f.WriteString("error!")
//恢复写之前的状态
err = f.Truncate(initSize)
if err != nil {
log.Fatal(err)
}
_, err = f.Seek(initSize, io.SeekStart)
if err != nil {
log.Fatal(err)
}
//状态恢复完成
//开始新的写操作
_, err = f.WriteString("new start text")
if err != nil {
log.Fatal(err)
}
}