http://blog.csdn.net/hujinpu
關(guān)于流
我一直對流都有點(diǎn)暈暈的,今天基本算搞清楚了所以然,所以在這里寫出,一來為了記憶,一來也希望能對和我一樣在這里有點(diǎn)模糊的一點(diǎn)幫助。(呵呵,不會就我一個人這么倒霉吧?)?
輸入流:此流對應(yīng)于鍵盤輸入或者由主機(jī)環(huán)境或用戶指定的另一個輸入源
超類: InputStream (System.in 就屬于這類 )
輸出流:此流對應(yīng)于顯示器輸出或者由主機(jī)環(huán)境或用戶指定的另一個輸出目標(biāo)。
超類: OutputStream (System.out 就屬于這類。其實(shí) System.err 也是間接屬于它 )
?
一切都是流!
看一段程序
我們來分析其中一段??????????????????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)過底層流輸出到顯示器或者由主機(jī)環(huán)境或用戶指定的另一個輸出目標(biāo),這里就是telnet應(yīng)用程序窗口,而不是command控制臺,如果數(shù)據(jù)未寫滿緩沖區(qū)println()也會自動調(diào)用flush()方法刷新緩沖區(qū),輸出數(shù)據(jù)。
Powered by: BlogJava Copyright © livahu