我正在使用 qt 5.3。
我有一件大事写入 QIODevice 以供阅读。我希望有一个代理来获取数据,同时保持 QIODevice 中的数据可供其他东西读取。因此,如果我调用 readAll() 我将在代理中获得一切良好但其他阅读器无法获得任何数据。
我想我应该使用 peek() 但这似乎需要一个 maxsize。我尝试传递 size() 或 bytesAvailable() 但他们没有给我真正的大小。他们返回的缓冲区大小可能是一些奇怪的值,如 3287。但我的数据有 1081530 字节那么大。
如何获取 QIODevice 的真实大小以供读取?
编辑:我上面提到的 QIODevice 实际上是 QNetworkReply。我想创建一个代理来观察我的程序的请求和响应数据,并使用 QWebView 访问一些 Flash 游戏。我实现了我的 QNetworkAccessManager 子类的 createRequest,我想分析的是我通过 createRequest 回复的finished() 信号捕获的。
Edit2:我注意到这个 QIODevice 是一个连续的,所以大小是未知的。但是如何在不清除数据的情况下读取数据呢?