1

我一直在使用 BeanShell 来解释只进行一些计算然后输出到控制台的简单文件。问题是,我想获取输出。这样System.out.println("test");我就可以把"test"它作为一个字符串放在其他地方。

我看过Interpreter.getOut(),但我还没有设法理解它的实际用途(文档没有那么有用)。我尝试抓取PrintStreamusinggetOut()然后打印其内容,但它是空的。在搞砸之后,我还尝试了以下操作:

Interpreter i = new Interpreter();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);
i.setOut(ps);
i.eval("System.out.println(\"test\");");
String out = baos.toString();

但这也是空的。

4

1 回答 1

0
Interpreter i = new Interpreter();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);

System.setOut(ps);

try {
  //i.eval("System.out.println(\"test\");");
  i.source("c:\\htdocs\\test.bsh");
} catch (Exception e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}

String out = "hello : "+baos.toString();
System.err.println(out);
于 2012-04-10T13:44:17.130 回答