直接来自API:
public int available() 抛出IOException
返回可读取的字节数的估计值(或 从此输入流中跳过)而不会被下一个阻塞 调用此输入流的方法。下一次调用 可能是同一个线程或另一个线程。单个读取或跳过 这么多字节不会阻塞,但可以读取或跳过更少的字节。
请注意,虽然InputStream的某些实现将返回 流中的总字节数,很多都不会。永远不会 正确使用此方法的返回值来分配缓冲区 旨在保存此流中的所有数据。
此方法的子类'实现可以选择抛出 IOException如果通过调用此输入流已关闭此输入流 close()方法。
类InputStream的可用方法始终返回0.
这个方法应该被子类覆盖。
我无法完全理解可能使用此方法的概念。任何人都可以做一个真实的例子吗? 提前谢谢。
答案 0 :(得分:1)
我20多年来一直在寻找一个真实的例子。
它的工作原理取决于流。对于某些流,它根本不起作用。对于缓冲流,它通过返回缓冲区中未读取的数量加上嵌套流的available()来工作。对于套接字和文件,它执行系统调用。