coai/utils/fs.go

103 lines
1.7 KiB
Go

package utils
import (
"fmt"
"io"
"os"
"path/filepath"
"strings"
)
func CreateFolder(path string) bool {
if err := os.MkdirAll(path, os.ModePerm); err != nil && !os.IsExist(err) {
return false
}
return true
}
func Exists(path string) bool {
err := os.Mkdir(path, os.ModePerm)
return err != nil && os.IsExist(err)
}
func CreateFolderNotExists(path string) string {
CreateFolder(path)
return path
}
func CreateFolderOnFile(file string) string {
if strings.LastIndex(file, "/") == -1 {
return file
}
return CreateFolderNotExists(file[:strings.LastIndex(file, "/")])
}
func WriteFile(path string, data string, folderSafe bool) bool {
if folderSafe {
CreateFolderOnFile(path)
}
file, err := os.Create(path)
if err != nil {
return false
}
defer file.Close()
if _, err := file.WriteString(data); err != nil {
fmt.Println(err.Error())
return false
}
return true
}
func Walk(path string) []string {
var files []string
err := filepath.Walk(path, func(path string, info os.FileInfo, err error) error {
if err != nil {
return nil
}
if !info.IsDir() {
files = append(files, handlePath(path))
}
return nil
})
if err != nil {
return nil
}
return files
}
func IsFileExist(path string) bool {
_, err := os.Stat(path)
return err == nil || os.IsExist(err)
}
func CopyFile(src string, dst string) error {
in, err := os.Open(src)
if err != nil {
return err
}
defer func(in *os.File) {
err := in.Close()
if err != nil {
fmt.Println(err)
}
}(in)
CreateFolderOnFile(dst)
out, err := os.Create(dst)
if err != nil {
return err
}
defer func(out *os.File) {
err := out.Close()
if err != nil {
fmt.Println(err)
}
}(out)
_, err = io.Copy(out, in)
return err
}