Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java InputStream.available()是如何工作的?_Java_Io_Stream - Fatal编程技术网

Java InputStream.available()是如何工作的?

Java InputStream.available()是如何工作的?,java,io,stream,Java,Io,Stream,直接从: 公共int可用() 抛出IOException 返回可读取字节数的估计值(或 跳过)而不会被下一个 为此输入流调用方法。下一次调用 可能是同一个线程或另一个线程。一次读取或跳过 这许多字节不会阻塞,但可以读取或跳过更少的字节 注意,虽然InputStream的一些实现将返回 流中的总字节数,许多字节不会。从来都不是 更正以使用此方法的返回值分配缓冲区 用于保存此流中的所有数据 此方法的子类实现可以选择抛出 如果此输入流已通过调用 close()方法 类InputStream的可用方法始

直接从:

公共int可用() 抛出IOException

返回可读取字节数的估计值(或 跳过)而不会被下一个 为此输入流调用方法。下一次调用 可能是同一个线程或另一个线程。一次读取或跳过 这许多字节不会阻塞,但可以读取或跳过更少的字节

注意,虽然InputStream的一些实现将返回 流中的总字节数,许多字节不会。从来都不是 更正以使用此方法的返回值分配缓冲区 用于保存此流中的所有数据

此方法的子类实现可以选择抛出 如果此输入流已通过调用 close()方法

类InputStream的可用方法始终返回0

此方法应由子类重写

我不能完全理解这种方法的可能用法。有人能举一个真实的例子吗?
提前感谢。

20多年来,我一直在寻找一个现实生活中的例子


它如何工作取决于流。对于某些流,它根本不起作用。对于缓冲流,它通过返回缓冲区中未读的量加上嵌套流的可用()来工作。对于套接字和文件,它执行系统调用。

我一般不使用它,因为它的确切行为取决于上下文、操作系统和其他您无法始终控制的事情。如果你能避免使用,我会的。