有没有办法重置 System.in,以便我可以获得一个新的流,让扫描仪等待输入?这是我的代码:
boolean run = true;
String commandLine = "";
Scanner keyboard;
Tokenizer arguments;
RecursiveDescentParser parse;
while (run){
// Command prompt
System.out.print(" ==>\t");
keyboard = new Scanner(System.in);
while (keyboard.hasNextLine()) {
commandLine += " " + keyboard.nextLine();
}
keyboard.close();
keyboard = null;
System.setIn ( new FileInputStream ( FileDescriptor.in ) ) ;
System.setIn(System.in);
keyboard = new Scanner(System.in);
arguments = new Tokenizer(commandLine);
commandLine = "";
parse = new RecursiveDescentParser(arguments, false);
run = parse.parseStartSymbol();
}
}
一旦该程序运行一次,hasNextLine() 将无限期地返回 false,并提示一个问题:我该如何解决这个问题?我可以以某种方式重置流吗?感谢您的帮助。
最佳答案
我认为您正在寻找:
InputStream originalInput = System.in;
System.setIn(new FileInputStream(FileDescriptor.in));
// Do stuff
System.setIn(originalInput);
但是,最好永远不要替换 System.in
,而只需让其余代码采用输入流即可使用。
关于java - 关于System.in和stream的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5114270/