[英]BufferedReader adds endlessly on readLine()
我试图通过向垃圾邮件发送“ Hello world!”来通过蓝牙从Arduino发送测试消息。 每100毫秒。 现在,在android上,我添加了无尽的“ hello world!” 到我的StringBuilder以及每个调试迭代中,我都有“ hello world!\\ nhello world!\\ nhello world!\\ n ...”等信息。该怎么办? 作为一个主意,我会从arduino到Android设备向很多Json发送垃圾邮件。 我是否需要为分隔符制作一些特殊的char序列,以在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();
}
您不需要检查流的结尾。
编写该读取循环的正确方法是:
while ((line = br.readLine()) != null)
{
total.append(line).append('\n');
}
但是,如果数据是无止境的,甚至没有循环就没有意义。 只需返回br.readLine()
。 拥有这种方法甚至没有任何意义。
注意:您无需分配字节数组即可确定其长度。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.