Доступность Android BufferedReader и DataInputStream в байтах

У меня проблемы с использованием Buffered Reader. Если я использую readline() и просто жду, пока он не станет нулевым, он отлично работает, давая мне знать, что я прочитал все, что нужно прочитать, проблема в том, что readline удаляет символы новой строки (\n и \r), которые создать другие проблемы в моем пост-парсинге.

Я попытался перейти к простому чтению размера maxbuf и использовать reader.ready(), чтобы узнать, есть ли что-то для чтения, но я не могу отличить его от недостаточного заполнения буфера (потому что он не мог освободить так много в момент времени). момент) и недозаполнение буфера из-за отсутствия данных. Ready() просто говорит, что операция чтения не будет заблокирована, похоже, нет разницы между отсутствием данных и просто неготовностью. Идеи?

Спасибо


person Tab    schedule 29.06.2014    source источник
comment
Еще лучше, кто-нибудь знает, можно ли использовать readline и не удалять символы новой строки? Я ничего не могу найти в документации.   -  person Tab    schedule 29.06.2014


Ответы (2)


Исправил это, отказавшись от вызова ready(); -1 кажется более безопасной проверкой. Нашел несколько онлайн-утверждений о том, что ready() хуже, чем бесполезен, и я думаю, что согласен. Итак, теперь, если я получаю -1, я считаю, что я закончил, а если я получаю 0, я просто предполагаю, что он не был готов; все остальное считается успешным, и я продолжаю, пока не нажму -1.

person Tab    schedule 29.06.2014

person    schedule
comment
не могу этого сделать, потому что я не знаю, что бы они добавили. - person Tab; 29.06.2014
comment
Какая разница, было ли это \n или \r\n ? - person greenapps; 29.06.2014