如何通过SpringSource Eclipse在Groovy中使用readLine读取多行?

时间:2011-09-29 05:53:05

标签: groovy groovy-console

我正在尝试从Spring Source Suite 2.7.1中的Groovy 1.7.10中的控制台读取多个输入(多个in.readLine()),但是控制台似乎只允许我输入第一个条目,放入第二个条目的空白移动让我输入第三个条目,为第四个条目输入空白等。以下是我正在使用的代码。

System.in.withReader {reader ->
        print  "w: "
        def w = reader.readLine()
        print  "x: "
        def x = reader.readLine()
        print "y: "
        def y = reader.readLine()
        print "z: "
        def z = reader.readLine()
} 

我得到的输出如下。

w:1 x:y:2 z:

正如你所看到的,它让我进入第一行,为第二行输入空白,然后让我输入第三行,并为第四行输入空白。这与我输入输入时按“输入”有关吗?我想不会因为readLine()应该读取一行并检索文本但不包括回车符。任何帮助表示赞赏。

谢谢,

2 个答案:

答案 0 :(得分:0)

假设您使用的是Java 6+,您可以尝试使用Console类来读取这些行吗?

def values = System.console().with { 
  [ 'w', 'x', 'y', 'z' ].inject( [:] ) { map, val ->
    map << [ (val):readLine( "$val: " ) ]
  }
}

println "Got w=$values.w x=$values.x y=$values.y z=$values.z"

不确定Console是否在STS内部有效...

答案 1 :(得分:0)

我猜这是在Windows上...似乎有一个方法readLine(boolean ignoreLF),但它不可见,或者不起作用。我也遇到了这个问题。

现在,每次只需要额外拨打reader.readLine()