2014-02-13 54 views
0

我想創建一個使用套接字編程的android客戶端和java服務器應用程序。我需要檢索從java服務器發送的文件,但我不想將該內容寫入客戶端的另一個文件。相反,我想創建一個列表框與收到的文件中的內容。我可以找到將這些內容寫入文件的代碼,但是我不知道如何以字符串的形式訪問這些內容。如何以String形式訪問InputStream中的數據?

這裏是我試過的代碼:

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(); 

回答

1

包裝你的InputStream爲BufferedReader

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

,並使用readLine()方法。

讀取一行文字。一條線被換行符('\ n'),回車符('\ r')或回車符 中的任意一個 被認爲是由一個換行符緊接。使用BufferedReader

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

包裹InputStreamString格式逐行讀取數據線(使用readLine()):

0

嘗試此。

+0

當我給上面的代碼給它的錯誤,CharSet未解析爲類型。我需要付出什麼?請提供任何建議 –

+0

@ user3243259:請參閱http://docs.oracle.com/javase/7/docs/api/java/nio/charset/Charset.html。現在你可以通過它作爲「UTF-8」 –

0

使用緩衝的讀者是最好的,或者你可以試試下面的代碼:

的最後一條語句後,使用byte[] "mybytearray"轉換成字符串如下:

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