识别输入流中的第一个字母

时间:2014-04-01 14:31:44

标签: java input

你好,我有这个方法,它正在为我的输入流提供服务。

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;
}

我想知道第一封书信是否是'我'或不。如果不是,我就是'我想终止输入。我如何获得第一个字母并立即进行测试?

2 个答案:

答案 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;
       }