![](/img/trans.png)
[英]java String != null not working reading from bufferedReader
[英]Reading a String array from a BufferedReader
我正在實現客戶端服務器應用程序。 從服務器我發送一個字符串數組,現在我想從我的客戶端代碼中讀取該字符串數組中的什么。 我怎樣才能做到這一點;
當我從客戶端打印值時,我得到類似[Ljava.lang.String;@120d10
的輸出
服務器:
try {
PrintWriter r= (PrintWriter) i.next();
String[] s={"f","ff"};
r.println(s);
r.flush();
} catch (Exception ex) {
}
客戶:
try {
while ((somestring= r.readLine()) != null) {
//When i print it i get something like [Ljava.lang.String;@120d10
}
} catch (Exception ex) {}
當你打印一個數組時,它首先調用toString()。 數組的默認toString()打印type @ hashCode
,這通常是無用的。
你的意圖是什么樣的
String[] arr={"f","ff"};
for(String s: arr)
r.println(s);
r.println(object)
調用object.toString()
知道要打印什么。 數組的stringTo()
方法僅返回該值( [L
表示您正在處理數組)。
如果要打印所有數組,請對其進行循環。
for(String str : s) {
r.println(str + delimiter);
}
當然,您將必須找到一個有效的定界符(一個不在字符串內的定界符)。
您應該考慮改為使用ObjectOutputStream / ObjectInputStream 。 然后,您可以直接發送各種可序列化的對象(包括數組)。
您正在嘗試打印字符串數組,而不是數組中的每個字符串。 在服務器上嘗試這樣的事情:
try {
PrintWriter r= (PrintWriter) i.next();
String[] s={"f","ff"};
for(String sElement : s)
{
r.println(sElement);
r.flush();
}
} catch (Exception ex) {
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.