123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- package fileop
- import (
- "os"
- "crazy-fox-backend-api/config"
- "crazy-fox-backend-api/model"
- "crazy-fox-backend-api/utils/zaplog"
- "crazy-fox-backend-api/global"
- )
- func Exist(path string) (bool, error) {
- _, err := os.Stat(path)
- if err != nil {
- if os.IsNotExist(err) {
- return false, nil
- }
- return false, err
- }
- return true, nil
- }
- // PathExists 文件目录是否存在
- func PathExists(path string) bool {
- exist, err := Exist(path)
- if err != nil || !exist {
- return false
- }
- return IsDir(path)
- }
- // IsDir 判断所给路径是否为文件夹
- func IsDir(path string) bool {
- s, err := os.Stat(path)
- if err != nil {
- return false
- }
- return s.IsDir()
- }
- // DirCreate 批量创建文件夹
- func DirCreate(dirs ...string) (err error) {
- for _, v := range dirs {
- if !PathExists(v) {
- global.ZapLog.Info("create directory: " + v)
- if err = os.MkdirAll(v, os.ModePerm); err != nil {
- zaplog.Error("create directory: "+v, err)
- return err
- }
- }
- }
- return err
- }
- // DirList 目录下的文件列表
- func DirList(path string) ([]model.FileInfo, error) {
- files, err := os.ReadDir(path)
- if err != nil {
- return nil, nil
- }
- fileList := make([]model.FileInfo, 0, len(files))
- for _, file := range files {
- info, err := file.Info()
- if err != nil {
- return nil, nil
- }
- fileTyp := FileType(info)
- fileList = append(fileList, model.FileInfo{
- Name: info.Name(),
- ModDate: info.ModTime().Format(config.DateTime),
- Type: fileTyp,
- Perm: info.Mode().String()[1:],
- TypeName: fileTypeName(fileTyp),
- Size: fileSize(info),
- })
- }
- return fileList, nil
- }
- // fileSize 获取文件大小
- func fileSize(info os.FileInfo) string {
- if info.IsDir() {
- return ""
- }
- return FileSizeFormat(uint64(info.Size()))
- }
|