Java InputStream.available()是如何工作的?
直接从: 公共int可用() 抛出IOException 返回可读取字节数的估计值(或 跳过)而不会被下一个 为此输入流调用方法。下一次调用 可能是同一个线程或另一个线程。一次读取或跳过 这许多字节不会阻塞,但可以读取或跳过更少的字节 注意,虽然InputStream的一些实现将返回 流中的总字节数,许多字节不会。从来都不是 更正以使用此方法的返回值分配缓冲区 用于保存此流中的所有数据 此方法的子类实现可以选择抛出 如果此输入流已通过调用 close()方法 类InputStream的可用方法始终返回0 此方法应由子类重写 我不能完全理解这种方法的可能用法。有人能举一个真实的例子吗?Java InputStream.available()是如何工作的?,java,io,stream,Java,Io,Stream,直接从: 公共int可用() 抛出IOException 返回可读取字节数的估计值(或 跳过)而不会被下一个 为此输入流调用方法。下一次调用 可能是同一个线程或另一个线程。一次读取或跳过 这许多字节不会阻塞,但可以读取或跳过更少的字节 注意,虽然InputStream的一些实现将返回 流中的总字节数,许多字节不会。从来都不是 更正以使用此方法的返回值分配缓冲区 用于保存此流中的所有数据 此方法的子类实现可以选择抛出 如果此输入流已通过调用 close()方法 类InputStream的可用方法始
提前感谢。20多年来,我一直在寻找一个现实生活中的例子
它如何工作取决于流。对于某些流,它根本不起作用。对于缓冲流,它通过返回缓冲区中未读的量加上嵌套流的可用()来工作。对于套接字和文件,它执行系统调用。我一般不使用它,因为它的确切行为取决于上下文、操作系统和其他您无法始终控制的事情。如果你能避免使用,我会的。