在《
Robust Java 中文版》1.1简介的BuggyEchoInput程序代码第5行:
InputStreamReader isr = new InputStreamReader(System.in);
在JDK_API帮助文档中InputStreamReader例句也是BuggyEchoInput程序代码的第5行、第6行两行合并写为一行而已。
见《JDK6API(中文)》原话:
“InputStreamReader 是字节流通向字符流的桥梁:它使用指定的
是因为InputStreamReader的构造方法 InputStreamReader(InputStream in) 。
in 输入流(InputStream)已打开并准备提供输入数据。通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。
由此可知,BuggyEchoInput程序代码在运行到第5行时会等待键盘的输入,所以光标就停着在那闪啊闪。输入完成后,程序继续运行。到第7行,调用readLine方法把所输入的文本行读取出来赋给inputLine这个字符串。
第5、6行是将所输入的文本从流中InputStream(字节流)传给InputStreamReader(字符流)再放到BufferStream(缓冲流)。
EchoInput程序代码:
InputStreamReader isr = new InputStreamReader(System.in);
在JDK_API帮助文档中InputStreamReader例句也是BuggyEchoInput程序代码的第5行、第6行两行合并写为一行而已。
见《JDK6API(中文)》原话:
“InputStreamReader 是字节流通向字符流的桥梁:它使用指定的
charset
读取字节并将其解码为字符。”
是因为InputStreamReader的构造方法 InputStreamReader(InputStream in) 。
in 输入流(InputStream)已打开并准备提供输入数据。通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。
由此可知,BuggyEchoInput程序代码在运行到第5行时会等待键盘的输入,所以光标就停着在那闪啊闪。输入完成后,程序继续运行。到第7行,调用readLine方法把所输入的文本行读取出来赋给inputLine这个字符串。
第5、6行是将所输入的文本从流中InputStream(字节流)传给InputStreamReader(字符流)再放到BufferStream(缓冲流)。
EchoInput程序代码:
1
import
java.io.
*
;
2
3
public
class
EchoInput
4
{
5
public static void main (String[] args)
6
{
7
System.out.println("Enter");
8
InputStreamReader isr = new InputStreamReader(System.in);
9
BufferedReader br = new BufferedReader(isr);
10
try
11
{
12
String inputLine = br.readLine();
13
System.out.println(inputLine);
14
}
15
catch(IOException ioe)
16
{
17
System.out.println("Error: "+ioe);
18
}
19
}
20
}

2

3

4



5

6



7

8

9

10

11



12

13

14

15

16



17

18

19

20
