tal*_*las 1 groovy stream system.in
我知道输入流在Groovy中的这种块的末尾自动关闭:
def exec = ""
System.in.withReader {
println "input: "
exec = it.readLine()
}
Run Code Online (Sandbox Code Playgroud)
但如果我想做类似的事情,有没有办法重新打开流:
def exec = ""
while(!exec.equals("q")) {
System.in.withReader {
println "input: "
exec = it.readLine()
}
if(!exec.equals("q")) {
//do something
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试这个时,我在第二次执行while循环时遇到此错误:
Exception in thread "main" java.io.IOException: Stream closed
Run Code Online (Sandbox Code Playgroud)
那么实现这一目标的最佳方法是什么?
谢谢.
您不应该尝试重新打开System.in,因为您不应该首先关闭它.您可以尝试以下内容
def exec
def reader = System.in.newReader()
// create new version of readLine that accepts a prompt to remove duplication from the loop
reader.metaClass.readLine = { String prompt -> println prompt ; readLine() }
// process lines until finished
while ((exec = reader.readLine("input: ")) != 'q') {
// do something
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1864 次 |
| 最近记录: |