我使用Indy(idHTTP)從互聯網下載EXE文件,我可以使用memorystream或filestream將其保存到磁盤,但我真的不知道它們之間是否有任何區別(也許在文件的結果結構中?)。我無法找到答案。Delphi - MemoryStream或FileStream
在哪裏,這裏有兩個簡單的函數來模擬我在做什麼:
Function DownloadMS(FUrl, Dest: String): Boolean;
var
Http: TIdHTTP;
Strm: TMemoryStream;
Begin
Result := False;
Http := TIdHTTP.Create;
Strm := TMemoryStream.Create;
With Http, Strm Do
Try
Try
Get(FUrl, Strm);
If (Size > 0) Then
Begin
Position := 0;
SaveToFile(Dest);
Result := True;
end;
Except
end;
Finally
Strm.Free;
Http.Free;
end;
end;
Function DownloadFS(FUrl, Dest: String): Boolean;
var
Http: TIdHTTP;
Strm: TFileStream;
Begin
Result := False;
Http := TIdHTTP.Create;
Strm := TFileStream.Create(Dest, fmCreate);
With Http, Strm Do
Try
Try
Get(FUrl, Strm);
Result := (Size > 0);
Except
end;
Finally
Strm.Free;
Http.Free;
end;
end;
你所專家考慮使用一種或另一種類型(MemoryStream的或FILESTREAM)?使用一種或其他類型時,EXE文件的結構是否有區別?推薦什麼類型?
謝謝!週末愉快!
的'TMemoryStream'一個
TFileStream
或
TMemoryStream
或任何流實例調用它內部使用' TFileStream'用於保存到文件(對於SaveToFile方法),所以答案很簡單 - 使用'TFileStream'。 – TLama 2013-05-04 14:08:09我可以考慮使用TMemoryStream而不是TFileStream的兩個原因。在發生異常情況下避免在文件系統中進行清理,並且在將其保存到文件之前需要進行一些操作。 – bummi 2013-05-04 14:14:54
你隨意使用'with'會讓我害怕。我建議你停止這樣做。 – 2013-05-04 14:20:49