Files
database-go/storage/file_storage.go
T

45 lines
742 B
Go

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
}