+
+func WriteFileSync(dirPath, filePath string, data []byte) error {
+ dst, err := TempFile(dirPath)
+ if err != nil {
+ return err
+ }
+ if _, err = dst.Write(data); err != nil {
+ os.Remove(dst.Name())
+ dst.Close()
+ return err
+ }
+ if err = dst.Sync(); err != nil {
+ os.Remove(dst.Name())
+ dst.Close()
+ return err
+ }
+ dst.Close()
+ return os.Rename(dst.Name(), filePath)
+}