package storage import ( "fmt" "os" ) func SaveData1(path string, data []byte) error { file, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0664) if err != nil { return err } defer file.Close() _, err = file.Write(data) if err != nil { return err } return file.Sync() } func SaveData2(path string, data []byte) error { tmp := fmt.Sprintf("%s.tmp.%d", path, randomInt()) file, err := os.OpenFile(tmp, os.O_WRONLY|os.O_CREATE|os.O_EXCL, 0664) if err != nil { return err } defer func () { file.Close() if err != nil { os.Remove(tmp) } }() if _, err = file.Write(data); err != nil { return err } if err = file.Sync(); err != nil { return err } err = os.Rename(tmp, path) return err }