name := filepath.Join(dir, "nncp"+suffix)
return os.OpenFile(name, os.O_RDWR|os.O_CREATE|os.O_EXCL, os.FileMode(0666))
}
+
+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)
+}