goProject/trunk/goutil/fileUtil/netFile.go

56 lines
1.1 KiB
Go
Raw Permalink Normal View History

2025-01-06 16:01:02 +08:00
package fileUtil
import (
"io"
"net/http"
"os"
"path"
)
// 下载网络文件
// netUrl网络文件地址
// saveDir存储位置
// saveFileName:存储的文件名
// ifTruncate:如果文件存在了,是否覆盖此文件
// 返回值:
// err:错误对象
func DownLoadNetFile(netUrl string, saveDir string, saveFileName string, ifTruncate bool) (err error) {
resp, err := http.Get(netUrl)
defer func() {
if resp != nil {
resp.Body.Close()
}
}()
if err != nil {
return
}
// 创建文件夹
if IsDirExists(saveDir) == false {
os.MkdirAll(saveDir, os.ModePerm|os.ModeTemporary)
}
// 创建文件
filePath := path.Join(saveDir, saveFileName)
var fileObj *os.File
if ifTruncate {
fileObj, err = os.OpenFile(filePath, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, os.ModePerm|os.ModeTemporary)
} else {
// 如果文件已经存在,则不能打开
fileObj, err = os.OpenFile(filePath, os.O_CREATE|os.O_WRONLY|os.O_EXCL, os.ModePerm|os.ModeTemporary)
}
defer func() {
if fileObj != nil {
fileObj.Close()
}
}()
if err != nil {
return
}
// 写入文件数据
_, err = io.Copy(fileObj, resp.Body)
return
}