Я пишу TCP-клиент, который получает некоторые двоичные данные и отправляет их на устройство. Проблема возникает, когда я использую BufferedReader для чтения того, что он получил.Чтение всего содержимого Java BufferedReader, включая символы завершения строки
Я очень озадачен, узнав, что нет возможности читать все данные. Метод readLine()
, который все используют, обнаруживает как символы \n
, так и \r
в качестве символов окончания строки, поэтому я не могу получить данные и конкатрировать строки, потому что я не знаю, какой символ был терминатором линии. Я также не могу использовать read(buf, offset, num)
, потому что он не возвращает количество прочитанных байтов. Если я прочитал его байтом по байту, используя метод read()
, это будет ужасно медленным. Пожалуйста, кто-нибудь скажет мне, что такое решение, этот API кажется мне совершенно глупым!
Ну, в первую очередь, спасибо всем. Я думаю, что основная проблема заключалась в том, что я прочитал учебную точку вместо документации Java. Но простите меня за это, поскольку я живу в Иране, и Oracle не позволяет нам обращаться к документации по какой бы то ни было причине. Спасибо в любом случае за пациента и полезные ответы.
Я закончил тем, что написал свою собственную ленту Reader/Writer. – Kenney
Но чтение (buf, offset, num) возвращает количество символов, прочитанных: http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html # read (char [],% 20int,% 20int) После того, как вы прочитаете строку, вы можете создать String из этого и затем объединить, как хотите. –
Это то, что я читал в tutorialspoint: –