Java Runtime.exec()从参数中删除换行符

时间:2012-09-12 16:56:04

标签: java process runtime.exec processbuilder

我有一个Java类正在使用Runtime.exec()来执行cscript进程,其中有一个String个从数据库中检索的参数。其中一个参数包括需要保留的换行符,但Runtime.exec()会删除换行符。使用ProcessBuilder时问题不存在,但我不必担心解析我的参数列表。

调用exec()时有没有办法保留换行符?

如果有人想看到它,这里是对exec()的调用的简化示例:

Process proc = Runtime.getRuntime().exec("cscript test.vbs \"line1\r\nline2\"");

我的脚本将“line1 line2”作为一个参数,换行符替换为空格。

1 个答案:

答案 0 :(得分:5)

您的问题中的信息很少,但我猜测您的问题如下:

请注意,Runtime.exec(...) with a String command argument的形式最终会使用StringTokenizer来生成实际的命令令牌,这可能会解释意外删除换行符。尝试使用Runtime.exec(...) with a String array command argument的形式,以便不会解析字符串命令参数。

当然,这样做可能需要您自己解析参数,但这可能是确保程序达到预期效果的唯一方法。