關(guān)于流
輸入流:此流對應(yīng)于鍵盤輸入或者由主機環(huán)境或用戶指定的另一個輸入源
超類: InputStream (System.in 就屬于這類 )
輸出流:此流對應(yīng)于顯示器輸出或者由主機環(huán)境或用戶指定的另一個輸出目標。
超類: OutputStream (System.out 就屬于這類。其實 System.err 也是間接屬于它 )
一切都是流!
看一段程序


?2

?3

?4

?5

?6

?7

?8

?9

10

11

12

13

14

15

16

17


18

19

20

21



22

23


24



25

26

27



28



29

30

31

32



33

34

35

36

37

38

39

40



41

42

43

44

45

46



47

48

49

50



51

52

53

54

55



56



57



58

59

60

61

62

63

64

65

66



67

68

69

70

71

72



73

74

75

76



77

78

79

80

81

82

?
我們來分析其中一段?
?????????????????InputStream inStream = incoming.getInputStream();
??????????????? OutputStream outStream = incoming.getOutputStream();
???????????????
??????????????? Scanner in = new Scanner(inStream);
??????????????? PrintWriter out = new PrintWriter(outStream, true);
??????????????? out.println("Hello! Enter BYE to exit.");
incoming?是一個Socket對象,getInputStream()方法返回一個InputStream對象,用于接受用戶從文件或者鍵盤或者其它源的輸入。而getOutputStream() 方法用來返回一個OutputStream對象,用來得到一個Socket的輸出流,再用PrintWriter包裝它(或叫結(jié)合產(chǎn)生過濾流)為了更方便的輸出。利用out對象的println(String s)方法,我們可以把s的數(shù)據(jù)輸出到out的緩沖區(qū)里面,然后如果數(shù)據(jù)滿了緩沖區(qū)自動經(jīng)過底層流輸出到顯示器或者由主機環(huán)境或用戶指定的另一個輸出目標,這里就是telnet應(yīng)用程序窗口,而不是command控制臺,如果數(shù)據(jù)未寫滿緩沖區(qū)println()也會自動調(diào)用flush()方法刷新緩沖區(qū),輸出數(shù)據(jù)。