available()
在 Java 中用于套接字编程是否可靠?
我只关心它告诉我何时有可读取的字节,以便当我调用读取方法时它们不会阻塞。
BufferedInputStream.available()
依靠InputStream.available()
.
InputStream.available() 的文档是这样说的:
请注意,虽然 InputStream 的某些实现会返回流中的字节总数,但许多不会。使用此方法的返回值来分配旨在保存此流中所有数据的缓冲区是不正确的。 http://docs.oracle.com/javase/6/docs/api/java/io/InputStream.html#available()
我不在乎它是否给出了正确的字节数,只是当有字节可供读取时它不会给我 0 。我想知道 BufferedInputStream.available() 是否总是在 Windows 和 Linux 上用于此目的。
另外,我不确定文档中的“实现”是什么意思。那指的是什么?InputStream 的子类?不同操作系统上的Java?到不同的JVM?
有没有人在 Windows 或 Linux 或其他系统上使用 available() 并且它不起作用?