0

我真的不明白这段代码的作用。我主要想知道什么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;
}
4

1 回答 1

2

基本上,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并且值为charRead0不大于0)。while循环结束并XMLContents返回对象。

于 2015-04-12T10:13:31.237 回答