Возврат каретки и новая строка с Java и readLine () - PullRequest
20 голосов
/ 21 января 2011

Я использую следующий код для установления HTTP-соединения и чтения данных:

con = (HttpURLConnection) new URL("http://stream.twitter.com/1/statuses/sample.json").openConnection();
...
con.connect();
while (line = rd.readLine()) {
    if (line.contains("\r\n")) {
      System.out.println("Carriage return + new line");
    }
} 

Однако, похоже, что \ r \ n не является частью строки (line),хотя сервер их возвращаетКак я могу прочитать данные и обнаружить "\ r \ n"?

Спасибо,

Джоэл

Ответы [ 2 ]

34 голосов
/ 21 января 2011

Если rd имеет тип BufferedReader, невозможно выяснить, вернул ли readLine() что-то, заканчивающееся \n, \r или \r\n ... символами конца строки отбрасываются и не являются частью возвращаемой строки.

Если вы действительно заботитесь об этих персонажах, вы не можете пройти через readLine(). Например, вам придется читать символы один за другим через read().

10 голосов
/ 21 января 2011

Из Javadocs :

public String readLine() throws IOException

Прочитайте строку текста. Строка считается завершенной любым из перевода строки ('\ n'), возврата каретки ('\ r') или возврата каретки, за которым сразу следует перевод строки.
Возвращает:
Строка, содержащая содержимое строки, без учета символов окончания строки , или ноль, если достигнут конец потока
Броски:
IOException - Если ошибка ввода-вывода происходит

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