In InputStreams, read()
calls are said to be "blocking" method calls. That means that if no data is available at the time of the method call, the method will wait for data to be made available.
The available()
method tells you how many bytes can be read until the read()
call will block the execution flow of your program. On most of the input streams, all call to read()
are blocking, that's why available returns 0 by default.
However, on some streams (such as BufferedInputStream
, that have an internal buffer), some bytes are read and kept in memory, so you can read them without blocking the program flow. In this case, the available()
method tells you how many bytes are kept in the buffer.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…