考虑以下使用 Indy 组件从 Internet 下载文件的代码:
procedure TForm26.Button1Click(Sender: TObject);
var
vFileStream : TStream;
begin
DeleteFile('C:\test.exe');
vFileStream := TFileStream.Create('C:\test.exe', fmCreate);
IdHTTP1.Get('SomeUrl', vFileStream);
vFileStream.Free;
end;
我收到内存不足异常。正在发生的事情是,除了我正在使用的事实之外,TFileStream
正在写入它的字节不会直接进入磁盘,而是会保留在内存中直到get
终止。
我要下载的文件非常非常大。
有谁知道如何在不出现内存不足异常的情况下下载大文件?
Delphi 2010 和来自 Indy 的 SVN 的最新 Indy 10。
编辑
那不是FileStream
问题。这是一个Indy
问题。Indy 以某种方式在将文件写入流之前将其缓存在内存中。