有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Groovy:将stdout重定向到文件无效

我只是在学groovy。我有一个非常简单的脚本,用println将一些文本输出到STDERR和STDOUT:

err = System.err    
resultStr = "test to print"
err.println resultStr
println resultStr

如果在不重定向的情况下运行脚本,我会在输出中得到两次resultStr字符串

如果我将输出重定向到一个带有test > test.txt的文件,结果字符串会在输出(OK)test中出现一次。txt已创建(正常),但它是空的。我试着用System.out.println代替println得到同样的结果。我做错了什么

如果这很重要的话,我使用的是Windows 7。以防万一,我尝试重定向标准windows程序的输出,比如dir,它可以正常工作

Groovy版本:1.8.4 JVM:1.7.0_02

更新:我还尝试在java(相同的JVM)中创建一个简单的"Hello World"类。重定向确实有效。所以它应该是Groovy中的东西

更新2:在@socha23评论他可以在Windows 7下从同一个脚本成功重定向后,我认为问题不在于脚本,而在于Groovy安装、版本冲突或操作系统。所以我问了similar question on SuperUser(很抱歉交叉发帖,但我真的认为这是一个边缘问题)

然后我发现,如果直接以test.groovy > test.txt的形式运行脚本,重定向将无法正常工作。但如果我运行groovy test.groovy > test.txt,它会工作。我仍然希望理解这种行为,并在可能的情况下予以纠正。请访问SU问题。至于今天12月24日,仍然没有答案

我想现在很清楚,这不是一个编程问题。请建议我从这里删除它。这两个问题都是相互关联的


共 (0) 个答案