Привет, у меня есть этот метод, который обслуживает мой входной поток.
private String getMessage(InputStream in) throws IOException {
StringBuilder sb = new StringBuilder();
int pom;
while((pom = in.read()) != -1){
char znak = (char) pom;
sb.append(znak);
if (sb.toString().contains("\r\n")) {
String result = sb.toString();
result = result.replace("\r\n", "");
return result;
}
}
return null;
}
Я хотел бы узнать, является ли первое письменное письмо "я" или нет. Если это не "я", я хочу закончить ввод. Как я могу получить первое письмо и сразу проверить его?
Проверьте первый символ в StringBuffer:
private String getMessage(InputStream in) throws IOException {
StringBuilder sb = new StringBuilder();
int pom;
while((pom = in.read()) != -1){
char znak = (char) pom;
sb.append(znak);
if ( sb.charAt(0) != 'I')
break;
if (sb.toString().contains("\r\n")) {
String result = sb.toString();
result = result.replace("\r\n", "");
return result;
}
}
return null;
}
Вам нужно использовать Reader
! Прямо сейчас вы используете InputStream
и это считывает байты, а не символы.
Это означает, что вам также необходимо знать кодировку вашего потока.
Предположим, что это UTF-8, вы можете сделать:
String line;
try (
BufferedReader reader = new InputStreamReader(in, StandardCharsets.UTF_8);
) {
while ((line = reader.readLine()) != null)
if (line.charAt(0) == 'l')
break;
}
Обратите внимание, что BufferedReader
.readLine()
автоматически .readLine()
строки.