Here's a sentence about the read() and read(array, index, pieces) methods of the InputStream class from the Oracle site that I can't explain to myself at all: "This method blocks until input data is available, end of file is detected, or an exception is thrown." I have two very seperated questions about this sentence. 1.) "This method blocks . . . " - what does it mean? It blocks what? What does the method block? Throws an error? 2.) I can not understand exactly, what and when does (or not) the method (blocks or not!) Please write the answers in Java style -- for me this is a more easily understandable language than English grammar.)
if (input data is available) {
    // blocks or not?? Or what does it in this case?
}
else {
    // blocks or not?? Or what does it in this case?
}

if (end of file is detected) {
    // blocks or not?? Or what does it in this case?
}
else  {
    // blocks or not?? Or what does it in this case?
}

if (an exception is thrown) {
    // blocks or not?? Or what does it in this case?
}
else  {
    // blocks or not?? Or what does it in this case?
}
PS: The other details (how many bytes this method reads, what kind of array it puts the data in, etc,) I feel I understood well, so thanks but these don’t need to be explained now. Thank You!