inputstreamreader.read 和 string.copyvalueof

inputstreamreader.read and string.copyvalueof

我不太明白这段代码的作用。我主要想知道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),returns 字符数阅读。

while子句while((charRead = isr.read(inputBuffer)) > 0)的作用和上面解释的完全一样,读取到的字符的值存储后,检查是否大于0……如果是,这意味着我们已经从中读取了一些东西流,我们进入循环。

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

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