当代码一步一步执行时,流如何工作?

问题描述:

例如,在Java中,从控制台读取输入你会写是这样的:当代码一步一步执行时,流如何工作?

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

public class ReadConsoleSystem { 
    public static void main(String[] args) { 

    System.out.println("Enter something here : "); 

    try{ 
     BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in)); 
     String s = bufferRead.readLine(); 

     System.out.println(s); 
    } 
    catch(IOException e) 
    { 
     e.printStackTrace(); 
    } 

    } 
} 

所以在线路String s = bufferRead.readLine(),代码只是等待输入进来,然后进入下一个但是如果你想看看连续的字符串流,试图解析出它的一部分,例如,读取一系列Twitter状态并只保存那些有“奥巴马”这个词的东西?

我不明白代码如何在处理来自流的输入的同时逐行执行,然后突然检测何时给出输入并保存它。

+2

没有什么特别神秘的 - “readLine”会阻止,直到您按下回车键。 – 2012-08-07 15:32:24

+0

“块”是什么意思? – 2012-08-07 15:38:11

+0

它(暂时)停止执行程序。 – 2012-08-07 16:26:56

写入的代码只能设置为从系统的输入(即控制台)的一行输入中读取。它的设置使得当你执行readLine时,它将从输入中读取一行。你必须输入一些东西(“你好”)并按回车,它会采取这一点,并把它放在字符串中。如果你想解析的东西,手动做后记

if(s.contains("Obama")) { 
    //blah 
} 

控制台是行缓冲。这意味着整个行只有一次到达Java进程,所以它看不到你写字符或回退空间来删除​​它们等。

我怀疑你不需要看它是如何做到这一点的。也许你可以描述你想要解决什么问题?

bufferRead.readLine();不会返回到调用代码,直到用户按下返回键。