我正在使用TIdHTTP.Get
下载文件。作为参数,我传递了一个TFileStream
对象,我注意到当我执行get方法时,文件大小立即分配,然后下载完成,我的问题是How I can avoid which the TIdHTTP component allocate all the file size in the disk at once when use Get?
答案 0 :(得分:0)
正如Remy在评论中所说,如果事先知道响应大小(来自Content-Length标头成员),Indy将始终预先分配整个流大小。
因此,如何避免我想到的磁盘空间分配的唯一解决方法是使用内存流并将该流中的数据复制到正在进行的文件中。
在磁盘上预先分配整个下载文件大小非常有用,因为即使您将文件下载到内存流中,您仍然需要在硬盘上有足够的空间来保存它(当然足够的可用内存供下载本身使用)。使用内存流的好处是你可以腾出时间来释放一些磁盘空间,但这很大程度上取决于你将要做什么。