Documentation ¶
Index ¶
- func DownloadFile(urls, file string, threadCount int)
- func DownloadFileDefault(urls, folders string, threadCount int)
- func GetBytesFile(filename string, bufferSize int) []byte
- func GetContentLength(url string, debug bool) (ContentSize int, ContentLength int64, err error)
- func GetFileSize(file string)
- func GetRangeStatus(url string) bool
- func IsEnoughMem(size, free int64) bool
- func SafeMkdir(folder string)
- func TestDownload(urlStr string, perThreadSize int) (int, map[int]string, []string, string, error)
- func Version()
- type DownloadFileParams
- type DownloadTask
- type DownloadThreadController
- type Singleness
- type Thread
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DownloadFile ¶
DownloadFile 下载文件并自定义保存文件路径
func DownloadFileDefault ¶
DownloadFileDefault 下载文件并使用URL最后一组作为文件名,例如http://qq/QQ9.6.2.exe则使用QQ9.6.2.exe
func GetBytesFile ¶
GetBytesFile 读取指定文件的所有内容到字节切片。 filename: 需要读取的文件名。 bufferSize: 读取时使用的缓冲区大小。 返回值: 文件的内容作为字节切片,如果读取失败或文件不存在,则返回nil。
func GetContentLength ¶ added in v1.1.10
GetContentLength 获取文件长度(字节&MB)
func GetRangeStatus ¶ added in v1.1.9
GetRangeStatus 判断是否支持分片下载Range
func IsEnoughMem ¶ added in v1.1.11
IsEnoughMem 判断系统剩余内存是否足够创建缓存区 size 单位为 MB 返回 true 表示足够创建缓存区,否则返回 false
func SafeMkdir ¶
func SafeMkdir(folder string)
SafeMkdir 检查指定的文件夹是否存在,如果不存在,则尝试创建它。 参数:
folder - 需要检查或创建的文件夹路径。
SafeMkdir 不返回任何值,但它可能在尝试创建文件夹时遇到错误。
func TestDownload ¶
Types ¶
type DownloadFileParams ¶
type DownloadFileParams struct { UrlStr string // UrlStr 用于指定待下载文件的URL。 RangeStr string // RangeStr 用于指定下载文件时的范围,例如通过HTTP Range请求。 RangeIndex int // RangeIndex 表示范围字符串中的起始索引,用于解析和处理范围请求。 TempFilename string // TempFilename 是下载过程中临时文件的名称,用于存储部分或完整文件。 Successes bool // Successes 标志下载操作是否成功,可用于后续处理或错误处理。 }
DownloadFileParams 定义了下载文件时所需的参数。 它包含了下载的URL、范围字符串、范围索引、临时文件名和下载是否成功的标志。
type DownloadTask ¶
type DownloadTask struct {
// contains filtered or unexported fields
}
DownloadTask 定义了一个下载任务的结构体。 它包含一个自定义函数和相应的参数信息,用于执行特定的下载任务。
type DownloadThreadController ¶
type DownloadThreadController struct { TaskQueue chan DownloadTask // 用于接收下载任务 TaskCount chan int // 用于记载当前任务数量 Exit chan int // 用于记载当前任务数量 ThreadCount int // 最大协程数 WaitGroup sync.WaitGroup // 等待协程完成 RangeStrs map[int]string // 所有需要下载的文件名 FileUrl string // 下载链接 DownloadResultInfoChan chan DownloadFileParams // 下载任务响应通道 DownloadFolder string // 下载文件保存文件夹 DownloadFileName string // 下载文件保存文件名 Filenames []string // 子文件名,有序 Save bool // 是否保存文件 }
DownloadThreadController 下载线程控制器
func (*DownloadThreadController) Init ¶
func (controller *DownloadThreadController) Init()
func (*DownloadThreadController) Run ¶
func (controller *DownloadThreadController) Run()
Run 方法启动下载线程控制器,负责调度和执行下载任务。 它遍历控制器中的所有下载范围字符串,并为每个范围创建一个下载任务。 控制器根据配置决定是保存文件到指定名称还是使用临时文件名。 此方法通过向任务队列中添加任务来启动下载过程。
type Singleness ¶ added in v1.1.7
type Singleness struct { Request *http.Request // Request 是一个HTTP请求对象,用于发送下载请求。 File *os.File // File 是一个文件对象,用于存储下载的文件内容。 FileSize int64 // FileSize 表示下载文件的大小,用于计算下载进度。 FileName string // FileName 是下载文件的名称,用于保存到本地。 FileUrl string // FileUrl 是下载文件的URL,用于记录下载文件的来源。 Debug bool // Debug 用于启用或禁用调试模式,在调试模式下可以打印下载过程中的信息。 SaveToDisk bool // 是否保存到硬盘 Error error // Error 用于记录下载过程中发生的错误。 MaxSize int64 // MaxSize 用于限制下载文件的最大大小,超过限制会中断下载,默认: 500MB }
Singleness 单文件下载
func NewSingleness ¶ added in v1.1.7
func NewSingleness(url, filename string) (*Singleness, error)
NewSingleness 创建单线程下载对象
func (*Singleness) DownLoadDefault ¶ added in v1.1.9
func (s *Singleness) DownLoadDefault() error
DownLoadDefault 发起HTTP GET请求下载指定文件。 本方法封装了下载过程中的请求构建和错误处理,以及实际的下载逻辑。 它使用了Singleness结构体的成员来存储请求URL、保存到磁盘的路径、是否开启调试模式以及文件名。 返回值为错误对象,如果下载过程中出现错误,则会返回相应的错误。
func (*Singleness) DownLoadDefaultBuff ¶ added in v1.1.9
func (s *Singleness) DownLoadDefaultBuff() error
DownLoadDefaultBuff 下载默认的单曲缓冲区。 该方法用于发起一个HTTP GET请求,下载指定URL的文件,但不会将文件保存到磁盘。 它主要配置了请求的URL、请求头,并通过内部的setHeader函数进一步配置请求头。 如果在请求过程中发生了错误,错误将被记录并返回。 参数:
s *Singleness: 包含请求URL、错误信息、是否保存到磁盘和调试信息的结构体指针。
返回值:
error: 如果在请求过程中发生错误,返回该错误;否则返回nil。
type Thread ¶ added in v1.1.9
type Thread struct { ThreadCount int // 最大协程数 SuppressRange bool // 是否支持分片下载 FileUrl string // 下载链接 SaveToDisk bool // 是否保存到硬盘 DownloadFolder string // 下载文件保存文件夹 ContentLength int64 // 文件长度 ContentSize int // 文件大小(MB) Filenames []string // 子文件名,有序 DownloadFileName string // 下载文件保存文件名 //RangeStrs map[int]string // 所有需要下载的文件名 Exit bool // 用于结束下载 Debug bool // 是否开启调试 Error error // 错误 Request *http.Request // Request 是一个HTTP请求对象,用于发送下载请求。 File *os.File // File 是一个文件对象,用于存储下载的文件内容。 WaitGroup sync.WaitGroup // 等待协程完成 Length int64 // 设置单次下载长度,默认: 长度(ContentLength)除以线程数(ThreadCount) MemFree int64 // 设置最小剩余内存,当剩余内存小于该数值则等待内存释放,默认: 100MB }
Thread 创建一个下载线程控制器
func NewThread ¶ added in v1.1.9
NewThread 创建一个新的Thread实例。 它通过给定的URL初始化Thread对象,并设置初始配置,如线程数和文件URL。 参数:
url - 需要下载的文件的URL。
返回值:
*Thread - 初始化后的Thread实例。
func (*Thread) DownLoadBuff ¶ added in v1.1.9
DownLoadBuff 通过协程下载到缓存区,如果不支持分片下载则使用单线程下载