我正在用Java实现一个使用HTTP协议下载网页的程序。
在向服务器发送GET
请求并读取响应头(包括content-length
)之后,程序将char
数组读入chars的数量(如{{1}中所指定的}})。
我尝试过使用BufferedReader
和InputStreamReader
类。
如果content-length
足够高,则只读取部分流并且不触及其余字节(就像我的结束已读取所有可用字节而另一端未完成写入)。
如content-length
类的文档中所述:
此迭代
BufferedReader
将继续,直到满足以下条件之一: *已读取指定数量的字符 基础流的 read
方法返回 *read
,表示文件结束,或 * *基础流的 -1
方法 *返回ready
,表示进一步的输入请求 *会阻止。
我担心3号子弹导致false
在中间退出,尽管指定的字节数尚未读取。
我自己可以实现这个功能,但是我想知道是否有任何类忽略子弹3号并阻塞直到所有字节都被读取,我找不到。
read
答案 0 :(得分:0)
关于基础ready()
的{{1}}方法的部分的含义是它将阻塞,直到至少一个字符已被传输,但不会再次阻塞。无法保证它会填满缓冲区。
你必须循环。