作者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
1F:→ iFEELing:如果你是windows 或许是CRLF 05/04 12:12
2F:推 PsMonkey:帐面上完全合理阿... 5+2=7 05/04 12:22
3F:推 LPH66:就是一楼说的 CRLF (CR 是 '\r' = 13, LF 是 '\n' = 10) 05/04 12:23
4F:→ LPH66:另外 end of stream 在 Win 提示字元中输入 Ctrl-Z 也可产生 05/04 12:25
5F:→ LPH66:当然读档的话就是读到档案结尾就会出现了没错 05/04 12:27
6F:→ fonz:了解了~!谢谢各位!! 05/04 12:34
7F:→ gmoz:你的输入或文字档是来自windows或M$的话 断行就是\r\n了XD 05/05 15:26
8F:推 Killercat:唉这东西就跟printstream问题差不多大.... 05/05 20:38