2015-04-12 5 views
0

Я действительно не понимаю, что делает этот кусок кода. Я в основном хочу знать, что такое процессы isr.read(inputBuffer) и что делает цикл while. Может ли кто-нибудь объяснить это мне? Благодарю.inputstreamreader.read и string.copyvalueof

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; 
} 
+0

Метод 'read()', который используется здесь, считывает байты и сохраняет в нем символы в данном массиве. Метод возвращает «Количество прочитанных символов или -1, если конец потока достигнут» (quote vom javadoc). Таким образом, цикл продолжается до тех пор, пока еще что-то читается. – Ria

ответ

2

В основном, 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.

+0

Обратите внимание, что 'inputBuffer = новый char [BUFFER_SIZE];' совершенно не нужен, и это просто пустая трата времени. Обработка исключений метода также ужасна. –