我不太明白这段代码的作用。我主要想知道 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
返回对象。
关于java - inputstreamreader.read 和 string.copyvalueof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29587932/