InputStream.available()如何工作?

时间:2013-06-21 12:06:30

标签: java io stream

直接来自API

  

public int available()                 抛出IOException

     

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

     

请注意,虽然InputStream的某些实现将返回   流中的总字节数,很多都不会。永远不会   正确使用此方法的返回值来分配缓冲区   旨在保存此流中的所有数据。

     

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

     

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

     

这个方法应该被子类覆盖。

我无法完全理解可能使用此方法的概念。任何人都可以做一个真实的例子吗? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

我20多年来一直在寻找一个真实的例子。

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