http://blog.csdn.net/hujinpu
关于流
我一直对流都有点晕晕的,今天基本算搞清楚了所以然,所以在这里写出,一来为了记忆,一来也希望能对和我一样在这里有点模糊的一点帮助。(呵呵,不会就我一个人这么倒霉吧?)
输入流:此流对应于键盘输入或者由主机环境或用户指定的另一个输入源
超类: InputStream (System.in 就属于这类 )
输出流:此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。
超类: OutputStream (System.out 就属于这类。其实 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包装它(或叫结合产生过滤流)为了更方便的输出。利用out对象的println(String s)方法,我们可以把s的数据输出到out的缓冲区里面,然后如果数据满了缓冲区自动经过底层流输出到显示器或者由主机环境或用户指定的另一个输出目标,这里就是telnet应用程序窗口,而不是command控制台,如果数据未写满缓冲区println()也会自动调用flush()方法刷新缓冲区,输出数据。
Powered by: BlogJava Copyright © livahu