package file import ( "io" "os" "path" "strings" ) // GetExt get the file ext func GetExt(fileName string) string { return path.Ext(fileName) } func CheckNotExist(src string) bool { _, err := os.Stat(src) return os.IsNotExist(err) } // IsNotExistMkDir create a directory if it does not exist func IsNotExistMkDir(src string) error { if notExist := CheckNotExist(src); notExist { if err := MkDir(src); err != nil { return err } } return nil } // MkDir create a directory func MkDir(src string) error { err := os.MkdirAll(src, os.ModePerm) if err != nil { return err } os.Chmod(src, 0o777) return nil } // IsNotExistMkDir create a directory if it does not exist func IsNotExistCreateFile(src string) error { if notExist := CheckNotExist(src); notExist { if err := CreateFile(src); err != nil { return err } } return nil } func Exists(path string) bool { _, err := os.Stat(path) // os.Stat获取文件信息 if err != nil { return os.IsExist(err) } return true } func CreateFile(path string) error { file, err := os.Create(path) if err != nil { return err } defer file.Close() return nil } func ReadFullFile(path string) []byte { file, err := os.Open(path) if err != nil { return []byte("") } defer file.Close() content, err := io.ReadAll(file) if err != nil { return []byte("") } return content } /** * @description: * @param {*} src * @param {*} dst * @param {string} style * @return {*} * @method: * @router: */ func CopySingleFile(src, dst, style string) error { var err error var srcfd *os.File var dstfd *os.File var srcinfo os.FileInfo if Exists(dst) { if style == "skip" { return nil } else { os.Remove(dst) } } if srcfd, err = os.Open(src); err != nil { return err } defer srcfd.Close() if dstfd, err = os.Create(dst); err != nil { return err } defer dstfd.Close() if _, err = io.Copy(dstfd, srcfd); err != nil { return err } if srcinfo, err = os.Stat(src); err != nil { return err } return os.Chmod(dst, srcinfo.Mode()) } func WriteToPath(data []byte, path, name string) error { fullPath := path if strings.HasSuffix(path, "/") { fullPath += name } else { fullPath += "/" + name } IsNotExistCreateFile(fullPath) file, err := os.OpenFile(fullPath, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0o666, ) if err != nil { return err } defer file.Close() _, err = file.Write(data) return err }