mirror of
https://github.com/KaySar12/NextZen-UserService.git
synced 2025-03-15 23:25:35 +07:00
146 lines
2.4 KiB
Go
146 lines
2.4 KiB
Go
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
|
|
}
|