Android BufferedReader缺少一些字母

时间:2013-11-16 18:13:05

标签: android

BufferedReader in = new BufferedReader(new InputStreamReader(
        socket.getInputStream()));
System.out.print("Received string: '");

while (!in.ready()) {

}

int result = in.read();
// String result1=in.readLine();
char[] buf = new char[50];

in.read(buf);

String b = new String(buf);
text.setText(b);

我从服务器发送了"hello world"这个词,但我从上面的代码中得到的是"ello world"。它缺少第一个字母h。我使用read代替readLine,因为readLine不起作用,它崩溃了。

另一个问题,hello world以2行而不是1行显示。 textview的布局是wrap_content。

2 个答案:

答案 0 :(得分:1)

这一行消耗了第一个字符:

int result=in.read();

因此,当你这样做时,buf将不包含它:

in.read(buf);

如果需要返回到开头,可以在缓冲的阅读器上使用mark()和reset()函数。或者只是注释掉那一行。

答案 1 :(得分:0)

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.print("Received string: '");
String inputLine;
String b = "";
while ((inputLine = in.readLine()) != null)
{
 b = inputLine;
 System.out.println(b);
 //or do whatever you want with b
}

通过这种方式,您还可以阅读多行(如果您获得了多行)......

  

我使用read而不是readLine,因为readLine不起作用   坠毁。

它不应该崩溃...我建议你应该先解决这个问题