有什么区别
byte[] buffer = new byte[1024];
// this:
if (inputStream.read(buffer) > 0) { /*...*/ }
// and:
if (inputStream.read(buffer) != -1) { /*...*/ }
两者都能确定网络流终止吗?
Java 文档用于InputStream.read() http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html#read%28byte%5B%5D%29 say:
如果长度为b
为零,则不读取任何字节并返回 0
在正常使用中,这种情况永远不会发生,因此明确测试这种情况没有多大意义。 (如果您想避免永远循环,因为在这种情况下缓冲区为零长度并且快速失败,只需测试缓冲区的长度。)
更进一步,还有:
Returns:读入缓冲区的总字节数,或-1
如果由于已到达流末尾而没有更多数据。
如果你想测试文件结尾(或网络流,或其他),使用测试:
if ( inputStream.read(buffer) != -1 ) ...
无错误的 Java 实现永远不会返回任何其他内容来指示没有更多可用数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)