【问题标题】:How does InputStream.available() work? [duplicate]InputStream.available() 是如何工作的? [复制]
【发布时间】:2013-06-21 12:06:29
【问题描述】:

直接来自API

公共 int 可用() 抛出 IOException

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

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

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

InputStream 类的可用方法总是返回 0。

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

我不能完全掌握这种方法的可能用法的概念。任何人都可以举一个现实生活中的例子吗? 提前致谢。

【问题讨论】:

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

标签: java io stream


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-06-22
    • 1970-01-01
    • 2016-01-19
    • 2014-08-25
    • 2011-10-02
    • 2011-10-22
    • 2011-04-15
    • 2011-04-26
    • 2015-09-24
    相关资源
    最近更新 更多