Это вполне возможно сделать.Недавно я написал проект, который считывал входные данные от нескольких мышей, используя очень похожий интерфейс.Двоичные данные от мышей поступили через файловый ввод / вывод.
Я думаю, что буферизованный ввод / вывод здесь неуместен.Буферизованный ввод / вывод попытается заполнить буфер для вас из соображений производительности.Но кажется, что ваше приложение будет проводить большую часть своего времени в ожидании новых персонажей.Если вы не читаете массово, то необработанные чтения байтов InputStream помогут: они будут возвращены сразу после получения запрошенного / ожидаемого количества байтов (1 в вашем случае).В вашем случае после прочтения символа >
вы должны выполнить еще одно однобайтовое чтение для следующего символа.
Вам необходимо выяснить, что делать с промежуточными символами.Как только вы обработали >
и следующий символ, что вы хотите делать со всеми следующими символами, которые не >
?
Что я делал в своем приложении, так это непосредственно читал отдельные байты изInputStream
.Это заблокировало бы, поэтому это должно было быть сделано в отдельном Thread
, который проводил большую часть своего времени в ожидании.Когда появился первый персонаж, я знал, что нужно прочитать еще немного (точно так же, как вы), который я мог бы затем обработать.У меня была настроена какая-то очередь для передачи этой информации остальной части моего приложения - вам нужно будет установить некоторую синхронизацию для связи между потоками.
РЕДАКТИРОВАТЬ: несколько небольших правок для уточненияточки.Извините, если это сбивает с толку.