我正在开发一个 Android 应用程序,它将在流中获取大量 JSON 数据。调用 Web 服务是可以的,但我有一个小问题。在我的旧版本中,我使用 Gson 读取流然后我尝试将数据插入数据库,除了性能之外没有任何问题。所以我试图改变加载数据的方法,我试图先读取数据,char[]
然后将它们插入数据库。
这是我的新代码:
HttpEntity responseEntity = response.getEntity();
final int contentLength = (int) responseEntity.getContentLength();
InputStream stream = responseEntity.getContent();
InputStreamReader reader = new InputStreamReader(stream);
int readCount = 10 * 1024;
int hasread = 0;
char[] buffer = new char[contentLength];
int mustWrite = 0;
int hasread2 = 0;
while (hasread < contentLength) {
// problem is here
hasread += reader.read(buffer, hasread, contentLength - hasread);
}
Reader reader2 = new CharArrayReader(buffer);
问题是阅读器开始正确阅读,但在流接近尾声时,hasread
变量值减少(由1
)而不是增加。对我来说很奇怪,然后while
循环永远不会结束。这段代码有什么问题?