Чтение из InputStream в нескольких форматах

Я пытаюсь написать класс, который читает HTTP-запросы и ответы и анализирует их. Поскольку заголовки представляют собой обычный текст, казалось, что их проще всего прочитать с помощью BufferedReader и метода readLine . Очевидно, это не подходит для тела данных, поскольку оно может быть двоичным, поэтому я хочу переключиться на чтение необработанных байтов после того, как будут прочитаны заголовки.

Прямо сейчас я делаю что-то вроде этого:

InputStream input=socket.getInputStream();
BufferedReader reader=new BufferedReader(new InputStreamReader(input));
BufferedInputStream binstream=new BufferedInputStream(input);

Проблема в том, что BufferedReader заранее читает и поглощает все двоичные данные из потока, прежде чем у меня будет возможность получить их с помощью binstream.

Есть ли способ предотвратить его чтение за символом новой строки для каждого вызова readLine ? Или есть лучший способ прочитать отдельные строки текста ASCII после необработанных двоичных данных?

6
задан Paŭlo Ebermann 15 February 2011 в 00:50
поделиться