我不太了解这段代码的作用。我主要想知道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
对象。