从文件中,"可用"的功能方法是:
返回可以读取的字节数的估计值(或 从此输入流中跳过)而不会被下一个阻塞 调用此输入流的方法。
因此,此方法返回结果需要多长时间。如果我有一个10000字的文件,我想通过这样检查来查看每个单词:
while (steam.available() > 0) {
steam.read(); // suppose that this read a word
}
所以在每次阅读第一个单词后,该方法是否会通过接下来的9999个单词?并且,在第二个单词之后,检查下一个9998个单词吗?
从文档中,它说方法"估计字节数",那么它是如何做到的?
答案 0 :(得分:2)
正如它所述,目的是告诉你在没有读取调用阻塞的情况下可以读取多少字节。这对于网络连接非常有用,其中数据正在填充缓冲区,您可能希望处理尽可能多的数据,而不会阻止读取调用,等待更多数据。
这种情况并不常用,也没有告诉你任何事情可以获得多少。例如,iv看到它用于测试消息的长度,这当然是错误的,因为此时只有一部分消息可能被接收。
您最好只阅读整个流,直到达到EOF。 available()仅在您想要处理尽可能多的数据而不阻塞时才有用。它说“估计”,因为有更多的数据可能会一直进入,你可能已经能够读取比你在调用它时返回的可用()更多的字节。
实际上,您需要来自流的所有数据,或者当您达到某个值时停止。但这是一个单独的问题,它从它来自何处迅速流入。它是否阻挡 - 你既不知道也不关心。 :)