我有一个Java类正在使用Runtime.exec()
来执行cscript
进程,其中有一个String
个从数据库中检索的参数。其中一个参数包括需要保留的换行符,但Runtime.exec()
会删除换行符。使用ProcessBuilder
时问题不存在,但我不必担心解析我的参数列表。
调用exec()
时有没有办法保留换行符?
如果有人想看到它,这里是对exec()
的调用的简化示例:
Process proc = Runtime.getRuntime().exec("cscript test.vbs \"line1\r\nline2\"");
我的脚本将“line1 line2”作为一个参数,换行符替换为空格。
答案 0 :(得分:5)
您的问题中的信息很少,但我猜测您的问题如下:
请注意,Runtime.exec(...)
with a String command argument的形式最终会使用StringTokenizer
来生成实际的命令令牌,这可能会解释意外删除换行符。尝试使用Runtime.exec(...)
with a String array command argument的形式,以便不会解析字符串命令参数。
当然,这样做可能需要您自己解析参数,但这可能是确保程序达到预期效果的唯一方法。