java的新手经常问,“我怎样才能从命令行读取一个整数呢?”他们遇到的问题是双重性的。第一个问题是java 把命令行当成是字符输入的地方,比方“1”而不是1.第二个方面是从命令行读取数据需要一个非常陡峭的学习曲线。幸运的是,使用一个简单的Listener系统,学习曲线的坡度被降低了而程序员可以关注于真正的问题,也就是如何把输入的字符串转换成数字。
更有经验的开发者也可以从这个系统中得到好处,因为它封装了命令行的InputStream API,把它隐藏在一个更合乎逻辑的API后。这使得将一个组件进行转换让它在GUI环境下运行而不需要重载STDIN成为可能。
ener类包含一个单一的cmdEntered(String)方法。通过返回false值,Listener能够指示命令行已经读取完毕。
我们讨论的List
package com.generationjava.io;
/**
* 监听一个命令行而且在命令被输入的
*时候收到通知。从cmdEntered返回false值将
*将阻止被监听的命令行。
*/
public interface CommandLineListener {
public booleancmdEntered(String cmd);
}
package com.generationjava.io;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.Reader;
import java.io.InputStreamReader;
import java.io.InputStream;