qinglong-go/utils/file.go

89 lines
1.6 KiB
Go

package utils
import (
log "github.com/sirupsen/logrus"
"io"
"net/http"
"os"
"path"
"path/filepath"
)
func Copy(src, dest string) {
srcInfo, err := os.Stat(src)
if err != nil {
return
}
_, err = os.Stat(dest)
if os.IsNotExist(err) {
if srcInfo.IsDir() {
_ = os.MkdirAll(dest, 0666)
}
}
if srcInfo.IsDir() {
log.Infoln("复制文件")
dir, err := os.ReadDir(src)
if err != nil {
return
}
for _, entry := range dir {
if entry.IsDir() {
Copy(path.Join(src, entry.Name()), path.Join(dest, entry.Name()))
continue
} else {
file, _ := os.Open(path.Join(src, entry.Name()))
newFile, _ := os.OpenFile(path.Join(dest, entry.Name()), os.O_RDWR|os.O_CREATE, 0666)
_, err := io.Copy(newFile, file)
if err != nil {
return
}
}
}
} else {
_ = os.MkdirAll(filepath.Dir(dest), 0666)
file, _ := os.Open(src)
newFile, _ := os.OpenFile(dest, os.O_RDWR|os.O_CREATE, 0666)
_, err := io.Copy(newFile, file)
if err != nil {
return
}
}
}
func DownloadFile(url, filePath string) error {
response, err := http.Get(url)
if err != nil {
return err
}
defer func(Body io.ReadCloser) {
err := Body.Close()
if err != nil {
}
}(response.Body)
file, err := os.OpenFile(filePath, os.O_RDWR|os.O_CREATE, 0666)
if err != nil {
return err
}
defer func(file *os.File) {
err := file.Close()
if err != nil {
}
}(file)
_, err = io.Copy(file, response.Body)
if err != nil {
return err
}
return nil
}
func FileExist(path string) bool {
_, err := os.Stat(path)
if err != nil {
return os.IsExist(err)
} else {
return true
}
}