作者fonz (寂寞的等待)
看板java
標題[問題] BufferedReader.read回傳
時間Sat May 4 12:09:25 2013
因為很少用到IO這個部分,觀念有點不太清楚
小弟嘗試寫了以下的Code
大致如下
BufferedReader theReader =
new BufferedReader(new InputStreamReader(System.in));
char readTemp[] = new char[10];
j = theReader.read(readTemp);
我看JAVA API上說的是
The number of characters read, or -1 if the end of the stream has been reached
想請教各位~"~
我現在假設輸入apple 回傳j為什麼會是7??
什麼都不輸入 直接按enter 回傳值是2
我Google了一下,在想應該是Enter的問題,可是為什麼apple不是回傳6呢? (5+1?)
還是說Enter的\n這樣算是兩個characters??
我嘗試了一下把readTemp的值印出來
for(readTemp length)
System.out.println(ReadTemp: "+readTemp[i]);
結果會出現
ReadTemp:a
ReadTemp:p
ReadTemp:p
ReadTemp:l
ReadTemp:e
ReadTemp:
ReadTemp:
ReadTemp:
ReadTemp:
ReadTemp:
小弟我不了解為什麼會有空兩次格??
另外一個問題是~API中所說的回傳-1
The end of Stream 意思是?? 請問可以幫忙舉個範例嗎??
還是要讀file才會發生這個-1? (我猜應該不是一_一")
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.47.30.191
→ iFEELing:如果你是windows 或許是CRLF 05/04 12:12
推 PsMonkey:帳面上完全合理阿... 5+2=7 05/04 12:22
推 LPH66:就是一樓說的 CRLF (CR 是 '\r' = 13, LF 是 '\n' = 10) 05/04 12:23
→ LPH66:另外 end of stream 在 Win 提示字元中輸入 Ctrl-Z 也可產生 05/04 12:25
→ LPH66:當然讀檔的話就是讀到檔案結尾就會出現了沒錯 05/04 12:27
→ fonz:了解了~!謝謝各位!! 05/04 12:34
→ gmoz:你的輸入或文字檔是來自windows或M$的話 斷行就是\r\n了XD 05/05 15:26
推 Killercat:唉這東西就跟printstream問題差不多大.... 05/05 20:38