通过ProcessBuilder在环境变量中设置null终止字符串

时间:2017-02-27 17:01:34

标签: java environment-variables processbuilder

正如标题所述,我正在尝试设置一个具有多个空终止文件名的环境变量。

我的代码如下所示:

ProcessBuilder pb = new ProcessBuilder(execCmd);
Map<String, String> env = pb.environment();
env.clear();
String storedFiles = "";
Iterator<Attributes> storedSequence = info.getSequence().iterator();
while (storedSequence.hasNext()) {
    storedFiles += storedSOPSequence.next().getFilename() + "\0";
}
env.put("StoredFiles", storedFiles);

try {
    pb.start();
} catch (Exception e) {

}

但是我遇到了以下例外情况:

Exception in thread "pool-1-thread-2" java.lang.IllegalArgumentException:
Invalid environment variable value: "/tmp/tmp.DXrJMdJmbW/53cd50f9"

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

您不应该在字符串中使用空值作为分隔符,尤其是在将字符串传递给操作系统时。

O / S将null解释为字符串结束标记,之后可能不会复制任何内容。

改为使用其他控制字符(例如&#39; \ r&#39;)。