如何以String形式访问InputStream中的数据?

时间:2014-02-13 06:29:24

标签: java android sockets

我正在尝试使用套接字编程创建一个android客户端和java服务器应用程序。我需要从java服务器检索文件发送,但我不想将该内容写入客户端的另一个文件。相反,我想创建一个列表框,其中包含接收文件中的内容。我可以找到用于在文件中写入这些内容的代码,但我不知道如何以字符串形式访问内容。

这是我试过的代码:

Android客户端

client=new Socket("10.0.2.2", 7575);
writer=new PrintWriter(client.getOutputStream(),true);
writer.write(mMsg);
writer.flush();
writer.close();
InputStream is=client.getInputStream(); 
bytesread=is.read(mybytearray,0,mybytearray.length);

我将代码更改为follws,但它无效。

 InputStream is=client.getInputStream();
 BufferedReader bf=new BufferedReader(new InputStreamReader(is));
 String value=bf.readLine();

3 个答案:

答案 0 :(得分:1)

将您的输入流包装到BufferedReader

BufferedReader d
          = new BufferedReader(new InputStreamReader(is));

并使用readLine()方法。

  

读取一行文字。一条线被认为是任何一条线终止的   换行符('\ n'),回车符('\ r')或回车符   然后立即换行。

答案 1 :(得分:0)

试试这个:

InputStream is=client.getInputStream(); 
bytesread=is.read(mybytearray,0,mybytearray.length);
// Create a new String out of the bytes read
String data = new String(mybytearray, 0, bytesread, CharSet);

OR

使用InputStream换取BufferedReader,并以readLine()格式逐行阅读数据(使用String)。

答案 2 :(得分:0)

最好使用缓冲读卡器,或者您可以尝试以下代码:

在最后一个语句之后使用byte[] "mybytearray"转换为字符串,如下所示:

if(bytesread > 0)
    String result = new String(mybytearray);