有什么区别
byte[] buffer = new byte[1024]; // this: if (inputStream.read(buffer) > 0) { /*...*/ } // and: if (inputStream.read(buffer) != -1) { /*...*/ }
两者都能确定网络流终止吗?
解决方法
InputStream.read()
的Javadocs说:
If the length of
b
is zero,then no bytes are read and 0 is returned
在正常使用中,这种情况永远不会发生,因此明确地测试这种情况并没有多大意义. (如果你想避免永远循环,因为在这种情况下缓冲区是零长度和快速失败,只需测试缓冲区的长度.)
还有,有:
Returns: the total number of bytes read into the buffer,or
-1
if there is no more data because the end of the stream has been reached.
如果要测试文件结束(或网络流,或其他),请使用测试:
if ( inputStream.read(buffer) != -1 ) ...
非bug的Java实现永远不会返回任何其他内容,以表明没有更多的数据可用.
原文地址:https://www.jb51.cc/java/122050.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。