Предположим, что я выполнил QNetworkRequest
и получил присвоенный QNetworkReply
. Если это большой файл (скажем, 1 ГБ), как я могу создать, скажем, 4-байтовый буфер массива и считывать данные 4k на 4k в этот массив и записывать его в одно и то же время в открытый поток файлов? Например эквивалент C# код будет это (я знаком с C# не Qt):Прочтите от QNetworkReply напишите в файл
public static void CopyStream(Stream input, Stream output)
{
// input is web stream, output is filestream
byte[] buffer = new byte[4096];
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write (buffer, 0, read);
}
}
---- редактировать
На самом деле то, что я пытаюсь сделать, это загрузить докачки на каждый запуск моего приложения. каждый раз, когда я пытаюсь возобновить загрузку, я устанавливаю заголовок range
QNetworkRequest
и просто получаю остальную информацию, поэтому вам нужно записывать данные не сразу, а шаг за шагом.
Вы читали о 'QNetworkReply :: setReadBufferSize'? – Ilya
@Ilya Я добавил дополнительную информацию о том, что я пытаюсь сделать, как вы думаете, 'QNetworkReply :: setReadBufferSize' работает для меня? я не так хорошо знаком с Qt – epsi1on