当代码一步一步执行时,流如何工作?
问题描述:
例如,在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状态并只保存那些有“奥巴马”这个词的东西?
我不明白代码如何在处理来自流的输入的同时逐行执行,然后突然检测何时给出输入并保存它。
答
写入的代码只能设置为从系统的输入(即控制台)的一行输入中读取。它的设置使得当你执行readLine时,它将从输入中读取一行。你必须输入一些东西(“你好”)并按回车,它会采取这一点,并把它放在字符串中。如果你想解析的东西,手动做后记
if(s.contains("Obama")) {
//blah
}
答
控制台是行缓冲。这意味着整个行只有一次到达Java进程,所以它看不到你写字符或回退空间来删除它们等。
我怀疑你不需要看它是如何做到这一点的。也许你可以描述你想要解决什么问题?
答
bufferRead.readLine();不会返回到调用代码,直到用户按下返回键。
没有什么特别神秘的 - “readLine”会阻止,直到您按下回车键。 – 2012-08-07 15:32:24
“块”是什么意思? – 2012-08-07 15:38:11
它(暂时)停止执行程序。 – 2012-08-07 16:26:56