我不太了解这段代码的作用。我主要想知道isr.read(inputBuffer)的处理过程和while循环的作用。有人可以帮我解释一下吗?谢谢。

InputStreamReader isr = new InputStreamReader(is);
int charRead;
char[] inputBuffer = new char[BUFFER_SIZE];
try {
    while((charRead = isr.read(inputBuffer)) > 0) {
        String readString = String.copyValueOf(inputBuffer, 0, charRead);
        XMLContents += readString;
        inputBuffer = new char[BUFFER_SIZE];
    }

    return XMLContents;
} catch(IOException e) {
    e.printStackTrace();
    return null;
}

最佳答案

基本上,isr.read(inputBuffer)inputstreamreader读取,将字符存储到给定的固定大小缓冲区(inputBuffer),然后返回读取的字符数。

while子句while((charRead = isr.read(inputBuffer)) > 0)完全按照上面的说明进行操作,并且在存储读取字符的值之后,它会检查它是否大于0。如果是,这意味着我们已经从流中读取了某些内容,然后进入了循环。

String.copyValueOf(inputBuffer, 0, charRead);用于将缓冲区的内容复制到字符串对象-readString中。之后,将最后一个字符串对象附加到XMLContents对象。最后,将创建一个新的缓冲区数组对象并将其分配给inputBuffer,然后重复该过程。

当不再读取字符时,sir.read(inputBuffer)返回0,并且charRead的值为0(不大于0)。 while循环完成,并返回XMLContents对象。

10-07 23:59