我正在学习使用 XML 读取 RSS 提要的教程。请知道,我是一个非常视觉化的学习者,教学人员试图用语言解释它,但遗憾的是我不明白:(。所以我希望有人可以解释。
StringBuilder tempBuffer = new StringBuilder();
try{
URL xmlUrl = new URL(URLPath);
HttpURLConnection httpURLConnection = (HttpURLConnection) xmlUrl.openConnection();
int response = httpURLConnection.getResponseCode();
Log.d("Downloaded Data", " Response Code:" + response);
InputStream is = httpURLConnection.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
int charRead;
char[] buffer = new char[500];
while(true){
charRead = isr.read(buffer);
if(charRead <= 0){
break;
}
tempBuffer.append(String.copyValueOf(buffer, 0, charRead));
}
return tempBuffer.toString();
现在我想尝试理解的是 char[] buffer = new char[500]。当我们执行 charRead = isr.read(buffer) 来读取流时,这意味着什么?
最佳答案
我将尝试以视觉示例的形式对其进行解释。
将InputStream
想象为从墙上的洞(网络)中出来的传送带。传送带上有一系列char
,但是你需要将它们带到你面前,然后才能将它们从传送带上取下并处理到你的桶(buffer
,只能容纳500 char
)中。当您调用 isr.read(buffer) 时,传送带运算符(operator)被告知启动传送带。传送带将开始滚动,将 char
对象倒入桶 (buffer
) 中。这将持续到
A.传送带将 500
chars
转储到桶(缓冲区
)中,或
B.传送带耗尽了从墙上(网络)的孔中出来的炭
。
代码行:
if(charRead <= 0){
break;
}
告诉传送带,如果按下按钮时墙上的孔中没有任何东西出来,则停止按下按钮并退出循环。
代码行:
tempBuffer.append(String.copyValueOf(buffer, 0, charRead));
告诉传送带运算符(operator)停止正在做的事情(在传送带因 500 个字符被倾倒到桶中或传送带用完字符而停止移动之后)并取出桶中的所有内容(缓冲区
),并取出 charRead
数量的字符
。基本上,这就是桶中的所有内容,因为我们知道 charRead
是从传送带上下来并进入桶中的 chars
数量,因此,如果我们从桶中取出 charRead
chars
,我们就知道我们已经获取了所有这些字符。这些被附加到 StringBuilder
上,然后循环再次开始!
关于java - 尝试了解 Android 中的 XML Pull 解析器 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38465022/