mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-02-28 13:06:56 -05:00
Bumps [github.com/gookit/config/v2](https://github.com/gookit/config) from 2.2.3 to 2.2.4. - [Release notes](https://github.com/gookit/config/releases) - [Commits](https://github.com/gookit/config/compare/v2.2.3...v2.2.4) --- updated-dependencies: - dependency-name: github.com/gookit/config/v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
152 lines
2.8 KiB
Go
152 lines
2.8 KiB
Go
package fsutil
|
|
|
|
import (
|
|
"bytes"
|
|
"io"
|
|
"os"
|
|
"path"
|
|
"path/filepath"
|
|
)
|
|
|
|
// perm for create dir or file
|
|
var (
|
|
DefaultDirPerm os.FileMode = 0775
|
|
DefaultFilePerm os.FileMode = 0665
|
|
OnlyReadFilePerm os.FileMode = 0444
|
|
)
|
|
|
|
var (
|
|
// DefaultFileFlags for create and write
|
|
DefaultFileFlags = os.O_CREATE | os.O_WRONLY | os.O_APPEND
|
|
// OnlyReadFileFlags open file for read
|
|
OnlyReadFileFlags = os.O_RDONLY
|
|
)
|
|
|
|
// alias methods
|
|
var (
|
|
DirExist = IsDir
|
|
FileExist = IsFile
|
|
PathExist = PathExists
|
|
)
|
|
|
|
// PathExists reports whether the named file or directory exists.
|
|
func PathExists(path string) bool {
|
|
if path == "" {
|
|
return false
|
|
}
|
|
|
|
if _, err := os.Stat(path); err != nil {
|
|
if os.IsNotExist(err) {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
// IsDir reports whether the named directory exists.
|
|
func IsDir(path string) bool {
|
|
if path == "" || len(path) > 468 {
|
|
return false
|
|
}
|
|
|
|
if fi, err := os.Stat(path); err == nil {
|
|
return fi.IsDir()
|
|
}
|
|
return false
|
|
}
|
|
|
|
// FileExists reports whether the named file or directory exists.
|
|
func FileExists(path string) bool {
|
|
return IsFile(path)
|
|
}
|
|
|
|
// IsFile reports whether the named file or directory exists.
|
|
func IsFile(path string) bool {
|
|
if path == "" || len(path) > 468 {
|
|
return false
|
|
}
|
|
|
|
if fi, err := os.Stat(path); err == nil {
|
|
return !fi.IsDir()
|
|
}
|
|
return false
|
|
}
|
|
|
|
// IsAbsPath is abs path.
|
|
func IsAbsPath(aPath string) bool {
|
|
if len(aPath) > 0 {
|
|
if aPath[0] == '/' {
|
|
return true
|
|
}
|
|
return filepath.IsAbs(aPath)
|
|
}
|
|
return false
|
|
}
|
|
|
|
// IsEmptyDir reports whether the named directory is empty.
|
|
func IsEmptyDir(dirPath string) bool {
|
|
f, err := os.Open(dirPath)
|
|
if err != nil {
|
|
return false
|
|
}
|
|
defer f.Close()
|
|
|
|
_, err = f.Readdirnames(1)
|
|
return err == io.EOF
|
|
}
|
|
|
|
// ImageMimeTypes refer net/http package
|
|
var ImageMimeTypes = map[string]string{
|
|
"bmp": "image/bmp",
|
|
"gif": "image/gif",
|
|
"ief": "image/ief",
|
|
"jpg": "image/jpeg",
|
|
// "jpe": "image/jpeg",
|
|
"jpeg": "image/jpeg",
|
|
"png": "image/png",
|
|
"svg": "image/svg+xml",
|
|
"ico": "image/x-icon",
|
|
"webp": "image/webp",
|
|
}
|
|
|
|
// IsImageFile check file is image file.
|
|
func IsImageFile(path string) bool {
|
|
mime := MimeType(path)
|
|
if mime == "" {
|
|
return false
|
|
}
|
|
|
|
for _, imgMime := range ImageMimeTypes {
|
|
if imgMime == mime {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
// IsZipFile check is zip file.
|
|
// from https://blog.csdn.net/wangshubo1989/article/details/71743374
|
|
func IsZipFile(filepath string) bool {
|
|
f, err := os.Open(filepath)
|
|
if err != nil {
|
|
return false
|
|
}
|
|
defer f.Close()
|
|
|
|
buf := make([]byte, 4)
|
|
if n, err := f.Read(buf); err != nil || n < 4 {
|
|
return false
|
|
}
|
|
|
|
return bytes.Equal(buf, []byte("PK\x03\x04"))
|
|
}
|
|
|
|
// PathMatch check for a string. alias of path.Match()
|
|
func PathMatch(pattern, s string) bool {
|
|
ok, err := path.Match(pattern, s)
|
|
if err != nil {
|
|
ok = false
|
|
}
|
|
return ok
|
|
}
|