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

时间:2012-08-07 15:28:03

标签: java stream

例如,在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状态,只保存那些带有“奥巴马”字样的东西?

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

该代码写入只设置为从系统的输入(即控制台)读取一行输入。它的设置使得当你执行readLine时,它将从输入中读取一行。你必须输入一些东西(“Hello there”)然后按Enter键,然后它将把它放入String中。如果你想解析东西,可以在词语

之后手动完成
if(s.contains("Obama")) {
    //blah
}

答案 2 :(得分:0)

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

我怀疑你不需要知道它是如何做到的。也许您可以描述一下您试图解决的问题?