12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- package filesys
- import (
- "io"
- "os"
- "sync"
- "github.com/88250/gulu"
- "github.com/siyuan-note/filelock"
- "github.com/siyuan-note/logging"
- )
- var writingFileLock = sync.Mutex{}
- func LockWriteFile() {
- writingFileLock.Lock()
- }
- func UnlockWriteFile() {
- writingFileLock.Unlock()
- }
- func WriteFileSaferByReader(writePath string, reader io.Reader) (err error) {
- writingFileLock.Lock()
- defer writingFileLock.Unlock()
- if err = gulu.File.WriteFileSaferByReader(writePath, reader, 0644); nil != err {
- logging.LogErrorf("write file [%s] failed: %s", writePath, err)
- return
- }
- return
- }
- func WriteFileSafer(writePath string, data []byte) (err error) {
- writingFileLock.Lock()
- defer writingFileLock.Unlock()
- if err = gulu.File.WriteFileSafer(writePath, data, 0644); nil != err {
- logging.LogErrorf("write file [%s] failed: %s", writePath, err)
- return
- }
- return
- }
- func Copy(source, dest string) (err error) {
- writingFileLock.Lock()
- defer writingFileLock.Unlock()
- filelock.ReleaseFileLocks(source)
- if err = gulu.File.Copy(source, dest); nil != err {
- logging.LogErrorf("copy [%s] to [%s] failed: %s", source, dest, err)
- return
- }
- return
- }
- func RemoveAll(p string) (err error) {
- writingFileLock.Lock()
- defer writingFileLock.Unlock()
- filelock.ReleaseFileLocks(p)
- if err = os.RemoveAll(p); nil != err {
- logging.LogErrorf("remove all [%s] failed: %s", p, err)
- return
- }
- return
- }
|