Здравствуйте, adontz, Вы писали:
A>INTERNET_FLAG_NO_CACHE_WRITE
A>Does not add the returned entity to the cache. This flag is used by GopherFindFirstFile, GopherOpenFile, HttpOpenRequest, and InternetOpenUrl.
A>FtpGetFile судя по всему HTTP кешем не пользуется, а пишет прямо в нужный файл.
Спасибо за ссылки на MSDN
Дело в том, что мне надо не просто забрать файл с сервера целиком и одноразово, а забирать его частями (чтобы графически показывать пользователю что за данные идут).
Поэтому FtpGetFile мне не подходит.
Я использую
CInternetFile* serverFile = NULL;
serverFile = pFtpConnection->OpenFile("ServerFile",GENERIC_READ,FTP_TRANSFER_TYPE_BINARY ,0);
...............
while (numBytes = serverFile->Read(fileBuf, FILEBUFLEN))
{
//write to HDD
localFile.Write(fileBuf, numBytes);
//do something
......
}
так вот несмотря на то, что данные пишутся в localFile, они еще и папраллельно пишутся во временный файл.
Размер файла может быть очень большой, да и двойная работа с записью на диск тоже не выглядит разумной.
Но я никак не могу это преодолеть. К сожалению OpenFile не поддерживает флага INTERNET_FLAG_NO_CACHE_WRITE