1

可能重复:
调用 Runtime.exec 时捕获标准输出

好吧,

我正在开发一个 Eclipse 插件,它生成一些基于可视界面的 PHP 代码(即用户在视图上拖放一些东西,然后我的插件将使用相关代码更新一些 php 文件)

我正在使用 FileUtils (Apache Commons) 创建 php 文件,并且正在使用 ASTParser 生成 PHP 代码。

我的问题是我需要对我新生成的代码进行美化和很好的缩进。我搜索了一下,发现了这个http://www.waterproof.fr/products/phpCodeBeautifier/。它以 .exe 文件的形式出现。我已将其添加到资源中,但在调用它并从中获取输出时遇到了一些麻烦。

我怎样才能做到这一点?另外我不得不说我需要它在 Mac 和 Windows 机器上工作。这可以做到吗?有没有更简单的美化代码的方法?

谢谢!

4

2 回答 2

0

如果您可以从命令行运行它并传递文件路径来美化代码,您可以使用以下代码运行它并捕获结果。

Process p = Runtime.getRuntime().exec("executable.exec");

BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));

while ((String line = input.readLine()) != null) {
  System.out.println(line);
}

另请参阅: 如何捕获从批处理执行的 EXE 返回的数据?

如何获取由 exe 文件生成的控制台输出?

调用 Runtime.exec 时捕获标准输出

于 2012-08-31T15:28:10.150 回答
0

I would do it as follows:

  1. Resolve the location of the exe in an OS independent manner.
  2. Create a Process using `Runtime.getRuntime().exec('exe_location');
  3. Take the process.getOutputStream() and print the unformatted code into it which means the exe would read the text to be formatted on STDIN.
  4. Take the process.getInputStream() and read out the formatted code from it which means the exe would print the formatted output on to STDOUT.
  5. Close the streams and end the process.
于 2012-08-31T15:29:09.657 回答