bufferedreader.read(char[],int,int)能否返回0?

ux6nzvsh  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(377)

可以 BufferedReader.read(char[], int, int) 返回 0 ? 如果是,在什么情况下?
我知道它回来了 -1EOF 否则读取的字符数。
但有没有可能我读过 0 不在时的字符数 EOF ?

5w9g7ksd

5w9g7ksd1#

是的,如果第三个参数( len )是0, read 将立即返回,并返回0。
在所有其他情况下,这是不可能的,因为 read 方法(读卡器和输入流)具体如下:
不要返回0,即使(当前)没有要返回的字节/字符-等待(阻止)直到有可用的字节/字符。
如果没有字节/字符发生(只有在流/读取器关闭时才能得出结论),则返回-1。
因此,0是不可能的。除非你明确地说你不想要字节,这是一个完全的不操作(这也不测试'可用性'),你不能真的这样做,如果你想知道如果你调用read,字节是否会被读取,你必须读取它们。甚至 available() 不完全是这样)。

  • )最后 Reader 以及 InputStream 是接口,因此可以由任何东西实现,任何实现都可以决定返回0,即使 len 不是零。但是,这样的实现被破坏了,因为它不符合inputstream和reader的规范。我不知道任何核心库(在包中) java.... )这是一个如此失败的实现。

相关问题