github.com/binbinly/pkg@v0.0.11-0.20240321014439-f4fbf666eb0f/util/xfile/file.go (about) 1 package xfile 2 3 import ( 4 "bytes" 5 "image" 6 _ "image/gif" 7 _ "image/jpeg" 8 _ "image/png" 9 "io" 10 "os" 11 "path/filepath" 12 "strings" 13 ) 14 15 // Exist 文件或目录是否存在 16 func Exist(s string) bool { 17 _, err := os.Stat(s) 18 return err == nil || os.IsExist(err) 19 } 20 21 // Is 文件是否存在 22 func Is(s string) bool { 23 info, err := os.Stat(s) 24 if err != nil { 25 return false 26 } 27 return !info.IsDir() 28 } 29 30 // IsDir 目录是否存在 31 func IsDir(s string) bool { 32 info, err := os.Stat(s) 33 if err != nil { 34 return false 35 } 36 return info.IsDir() 37 } 38 39 // ImageType 图片类型 40 func ImageType(read io.Reader) (string, error) { 41 src, err := io.ReadAll(read) 42 if err != nil { 43 return "", err 44 } 45 reader := bytes.NewReader(src) 46 // 必须引入 image/jpeg,gif,png 包 否则会报 image: unknown format 47 _, imgType, err := image.Decode(reader) 48 if err != nil { 49 return "", err 50 } 51 return imgType, nil 52 } 53 54 // Ext 获取文件后缀名 55 func Ext(filename string) string { 56 index := strings.LastIndex(filename, ".") 57 if index == -1 || index == len(filename)-1 { 58 return "" 59 } 60 return filename[index+1:] 61 } 62 63 // Mkdir 创建目录 64 func Mkdir(path string) error { 65 dir := filepath.Dir(path) 66 _, err := os.Stat(dir) 67 if os.IsNotExist(err) { 68 err = os.MkdirAll(dir, os.ModePerm) 69 } 70 return err 71 } 72 73 // Create 创建文件 74 func Create(content bytes.Buffer, name string) error { 75 file, err := os.Create(name) 76 if err != nil { 77 return err 78 } 79 defer file.Close() 80 81 if _, err = file.Write(content.Bytes()); err != nil { 82 return err 83 } 84 return nil 85 }