你好,我有这个方法,它正在为我的输入流提供服务。
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;
}
我想知道第一封书信是否是'我'或不。如果不是,我就是'我想终止输入。我如何获得第一个字母并立即进行测试?
答案 0 :(得分:1)
您需要使用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()
会自动删除换行符。
答案 1 :(得分:0)
检查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;
}