Files
atom/utils/fs/file.go
2023-03-09 10:23:23 +08:00

74 lines
1.2 KiB
Go

package fs
import (
"os"
"path/filepath"
"reflect"
"strings"
)
func Move(src, dst string) (err error) {
if dst == "" {
return nil
}
src, err = filepath.Abs(src)
if err != nil {
return err
}
dst, err = filepath.Abs(dst)
if err != nil {
return err
}
revoke := false
dir := filepath.Dir(dst)
Redirect:
_, err = os.Stat(dir)
if err != nil {
err = os.MkdirAll(dir, 0o755)
if err != nil {
return err
}
if !revoke {
revoke = true
goto Redirect
}
}
return os.Rename(src, dst)
}
func Delete(filePath string) error {
return os.RemoveAll(filePath)
}
func TrimSpace(target interface{}) {
t := reflect.TypeOf(target)
if t.Kind() != reflect.Ptr {
return
}
t = t.Elem()
v := reflect.ValueOf(target).Elem()
for i := 0; i < t.NumField(); i++ {
if v.Field(i).Kind() == reflect.String {
v.Field(i).SetString(strings.TrimSpace(v.Field(i).String()))
}
}
}
// FileExist 判断文件是否存在
func FileExist(path string) bool {
fi, err := os.Lstat(path)
if err == nil {
return !fi.IsDir()
}
return !os.IsNotExist(err)
}
func FilePathInfo(file string) (path, name, ext string) {
filename := filepath.Base(file)
path = filepath.Dir(file)
ext = filepath.Ext(filename)
name = strings.TrimSuffix(filename, ext)
return
}