XML을 사용하여 RSS 피드를 읽는 방법을 배우고있었습니다. 나는 그래서 누군가가 설명 할 수 있겠죠. :(매우 시각적 학습자와 사람의 가르침이 단어에서 그것을 설명하려하지만 슬프게도 나는 이해하지 못했다임을 알게하시기 바랍니다.안드로이드에서 XML Pull Parser를 이해하려고 시도했습니다 - Java
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)를 수행 할 때의 의미는 무엇입니까?
오케이. 그래서 당신이 말한대로, 모든 코드는 스트림에서 500 문자를 가져 와서 버퍼 배열에 넣은 다음 charRead에 할당하고 읽은 문자 수가 0이 될 때까지 계속합니다. 즉 스트림이 끝났음을 의미합니까? 이 경우 루프가 완료되고 다시 시작되면 버퍼가 채워지지 않았습니까? 나는 버퍼의 목적에 대해 혼란 스럽다고 생각한다. – Ridhwaan
버퍼는 마지막으로 읽은 결과를 저장합니다. 그래서 당신은 500 바이트로 읽고, 처리하고, 다음 500에서 읽고, 처리가 끝날 때까지 처리합니다.예, 루프 상단에는 이미 버퍼 변수가 채워져 있지만 이미 사용 된 데이터로 채워지고 겹쳐 쓰지 않아도됩니다. 새 버퍼를 할당하지 않는 이유는 효율성입니다.이 루프는 빠르게 반복되고 할당은 느려질 수 있습니다. –