我正在使用Indy
和开发下载管理器Delphi XE
(应用程序使用Multithreading
尝试与服务器建立多个连接)。一切正常,但有时最终下载的文件已损坏,当我检查下载的临时文件时,我发现其中 2 或 3 个在其末尾填充了零。(每个临时文件是每个连接的下载结果)。文件越大,我得到的临时文件越多。例如,在其中一个 65,536,000 字节的临时文件中,只有 0-34,359,426 的范围是有效的,而从 34,359,427 到 64,535,999 它全是零。如果我删除这些零,应用程序将自动下载丢失的段,我得到的结果是健康的下载文件,如果问题不再发生的话。我想摆脱临时文件末尾的那些零,而不会降低下载速度。
PS我正在使用TFileStream
,我将它直接发送到并使用方法TIdHTTP
下载文件。GET
附加信息:我处理OnWork
分配AWorkCount
给公共int64
变量的事件。每次下载文件时,下载的文件大小(该Int64
变量)都会记录到一个文本文件中,并且从日志中可以看出该文件已完全下载(即使是那些零字节)。