Прочитайте первую часть inputsream в Java - PullRequest
0 голосов
/ 07 апреля 2011

У меня есть файл XML, который я читаю из URLConnection.Файл растет с течением времени.Я хочу прочитать первые 100 КБ файла, сегодня размер файла составляет 1,3 МБ.Затем я хочу разобрать часть, которую я прочитал.Как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 07 апреля 2011

(с нуля)

int length = 100*1024;
byte[] buf = new byte[length];
urlConnection.getInputStream().read(buf,0,length);
StringBufferInputStream in = new StringBufferInputStream(new String(buf));
new SAXParser().parse(in,myHandler);
1 голос
/ 07 апреля 2011

Насколько я понимаю, вас интересует не только 100 Кб потока, но и 100 Кб потока, из которого вы можете извлекать необходимые данные. Это означает, что 100 КБ, предложенные Питером, не будут работать, так как это может привести к неправильному форматированию XML.

Вместо этого я бы предложил использовать синтаксический анализатор StAX, который даст вам возможность читать и анализировать XML напрямую из потока с возможностью остановки, когда вы достигнете предела в 100 КБ (или почти).

Для получения дополнительной информации взгляните на XMLStreamReader интерфейс (и примеры его использования). Например, вы можете зацикливаться, пока не доберетесь до START_ELEMENT с именем «result», а затем использовать метод getTextCharacters(int sourceStart, char[] target, int targetStart, int length), указав в качестве размера буфера 100k.

Как вы уже упоминали, Android не имеет парсера StAX. Однако он имеет XmlPullParser с аналогичной функциональностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...