BufferedReader在readLine()上无休止地添加

时间:2016-07-07 22:39:04

标签: java android bufferedreader

我试图通过垃圾邮件发送来自Arduino的测试消息" hello world!"每100毫秒。 现在,在Android上,我已经无休止地添加了#34; hello world!"我的StringBuilder和每个调试迭代都有" hello world!\ nhello world!\ nhello world!\ n ..."等等 我该怎么办? 作为一个想法,我会将很多Jsons从arduino垃圾邮件发送到Android设备。在arduino的每条消息之后,我是否必须为分隔符制作一些特殊的字符序列?或者是否有更简单的决定?

 public static String toString(InputStream inputStream) throws IOException {

            byte[] bs = new byte[inputStream.available()];
            if (Utils.isZero(bs.length)) {
                return "";
            }
            BufferedReader r = new BufferedReader(new InputStreamReader(inputStream));
            StringBuilder total = new StringBuilder();
            String line;
            while (r.ready()) {
                line = r.readLine();
                total.append(line).append('\n');
            }

            return total.toString();
        }

1 个答案:

答案 0 :(得分:0)

您没有检查流的结尾。

编写该读取循环的正确方法是:

while ((line = br.readLine()) != null)
{
    total.append(line).append('\n');
}

但如果数据无穷无尽,即使有一个循环也没有意义。只需返回br.readLine()。拥有这种方法甚至没有意义。

注意:您不需要分配字节数组来确定其长度。