gpt4 book ai didi

java - BufferedInputStream.available() 在套接字编程中可靠吗?

转载 作者:行者123 更新时间:2023-12-03 11:52:15 26 4
gpt4 key购买 nike

available()在 Java 中的套接字编程中使用可靠吗?

我只关心它告诉我什么时候有可用的字节读取,这样当我调用读取方法时它们不会阻塞。
BufferedInputStream.available()依赖 InputStream.available() .

InputStream.available() 的文档是这样说的:

Note that while some implementations of InputStream will return the total number of bytes in the stream, many will not. It is never correct to use the return value of this method to allocate a buffer intended to hold all data in this stream. http://docs.oracle.com/javase/6/docs/api/java/io/InputStream.html#available()



我不在乎它是否提供了正确的字节数,只是在有可供读取的字节数时它不会给我 0。我想知道 BufferedInputStream.available() 在 Windows 和 Linux 上是否始终适用于此目的。

另外,我不确定文档中的“实现”是什么意思。那是指什么?到 InputStream 的子类?不同操作系统上的Java?到不同的JVM?

有没有人在 Windows 或 Linux 或其他系统上使用过 available() 但它不起作用?

最佳答案

您在问题中链接到的同一文档说:

A single read or skip of this many bytes will not block, but may read or skip fewer bytes.



所以我会说它是“安全的”,因为当 I/O 不返回 0 时它不会阻塞。另一方面,实际上,当存在时,不能保证它会返回非零要读取的字节。

请注意 InputStream是一个抽象类,所以任何 InputStream你拥有的对象必然是一个子类。这就是文档所说的“实现”。任何具体的子类都将实现所有抽象方法。

关于java - BufferedInputStream.available() 在套接字编程中可靠吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12083493/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com