java - inputstreamreader.read 和 string.copyvalueof

标签 java inputstreamreader

我不太明白这段代码的作用。我主要想知道 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)返回0charRead 的值是 0 (不大于 0 )。 while循环结束,XMLContents返回对象。

关于java - inputstreamreader.read 和 string.copyvalueof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29587932/

相关文章:

java - 如何使用注释设置模型中列的默认值

java - 我需要使用子字符串,但我需要包含第二个参数

c# - 在文本文件C#流阅读器中随机选择一行

java - jsp中的流数据显示

java - 第一个和第二个 tocen 正则表达式

java - 为什么Java中的final常量可以被重写?

java - java层次结构不明确

java.io 从无缓冲字节获取缓冲字符流的两种方法一

java - 在 Java try block 中找不到符号

java - Java/Scala 中 readline 的奇怪行为