簡體   English   中英

從 QNetworkReply 讀取大文件到 QFile? 從 QNetworkReply 流式傳輸

[英]Reading large file from QNetworkReply to QFile? Streaming from QNetworkReply

stream 以非阻塞方式從QNetworkReplyQFile的大文件的正確方法是什么?

我假設我需要連接到QNetworkReply::readyRead信號並在插槽中調用QNetworkReply::read ,並使用QFile::write數據,然后我猜在QNetworkReply::finished調用QNetworkReply::readAll以獲得任何剩余字節。

我不清楚的是我應該在readyRead中調用多少次,傳遞給它的緩沖區有多大,以及我是否應該read一個readyRead信號中多次調用read - 如果不止一次,在什么條件下我應該停止調用read

connect(reply, &NetworkReply::readyRead, [file] {
    while (???) {
       file.write(reply->read(???));
    }
});

是否保證read不會阻塞(因此會阻塞 UI 事件循環)?

(也不清楚錯誤檢查。如果該循環中出現文件 io 錯誤的網絡錯誤怎么辦?)

(另外,是否有更高級別的 class 可以為我解決這個問題?)

正確的方法是調用readAll以響應readyRead readAll將返回 memory 中當前可用的所有字節(在文件完成之前它不會阻塞):

connect(reply, &NetworkReply::readyRead, [file] {
    file.write(reply->readAll());
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM