qinglong-go/utils/file.go

80 lines
1.5 KiB
Go
Raw Normal View History

2022-11-20 14:11:47 +00:00
package utils
import (
log "github.com/sirupsen/logrus"
"io"
2022-11-26 02:31:26 +00:00
"net/http"
2022-11-20 14:11:47 +00:00
"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
}
}
}
2022-11-26 02:31:26 +00:00
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
}