lxutils/lxCommon/file.go
liuchangshun b2d9edeb43 123
2023-11-24 08:46:50 +08:00

100 lines
2.0 KiB
Go

package lxCommon
import (
"fmt"
"io"
"io/ioutil"
"os"
"path/filepath"
"runtime"
"time"
)
// 二进制流文件保存到本地 name png pdf
func SaveFile(url, path, name string) (filePath string, err error) {
c := NewClient() //忽略证书
_dir := AddNewFile(path)
filePath = _dir + name
resp, err := c.Get(url)
if err != nil {
fmt.Println(err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println(err)
return
}
err = ioutil.WriteFile(filePath, body, 0644)
if err != nil {
fmt.Println(err)
return
}
return
}
func AddNewFile(folder string) string {
oldPath := folder
if runtime.GOOS == "windows" || runtime.GOOS == "darwin" {
oldPath = "./pdf/"
}
_dir, _ := CreateDateDir(oldPath)
return _dir
}
func Copy(src, dst string) (int64, error) {
sourceFileStat, err := os.Stat(src)
if err != nil {
return 0, err
}
if !sourceFileStat.Mode().IsRegular() {
return 0, fmt.Errorf("%s is not a regular file", src)
}
source, err := os.Open(src)
if err != nil {
return 0, err
}
defer source.Close()
destination, err := os.Create(dst)
if err != nil {
return 0, err
}
defer destination.Close()
nBytes, err := io.Copy(destination, source)
return nBytes, err
}
func GetFileSize(filename string) (int64, error) {
fi, err := os.Stat(filename)
if err != nil {
return 0, err
}
return fi.Size() / 1024 / 1024, nil
}
func CreateDateDir(basePath string) (dirPath, dataString string) {
folderName := time.Now().Format("2006-01-02")
folderPath := filepath.Join(basePath, folderName)
if _, err := os.Stat(folderPath); os.IsNotExist(err) {
// 必须分成两步
// 先创建文件夹
os.MkdirAll(folderPath, 0777)
// 再修改权限
os.Chmod(folderPath, 0777)
}
return folderPath + "/", folderName
}
// 判断文件夹/文件是否存在
func PathIsExists(path string) (bool, error) {
_, err := os.Stat(path)
if err == nil {
return true, nil
}
if os.IsNotExist(err) {
return false, nil
}
return false, err
}