当我执行这行代码时:
Runtime.getRuntime().exec(new String[] {"mkdir", "-p", "/home/stuff/Keyring", "&& touch", "/home/stuff/Keyring/keyring.gpg"});
Keyring文件夹中的messaging.gpg是作为目录而不是文件创建的,我无法弄清楚原因。有什么想法吗?
答案 0 :(得分:6)
您正在使用以下参数执行mkdir
:
"-p", "/home/stuff/Keyring", "&& touch", "/home/stuff/Keyring/keyring.gpg"
(exec()
的第一个参数是要执行的进程)所以-p告诉mkdir
在需要时构建父目录,其余参数是要创建的目录。因此你的问题/问题(我怀疑你的某个地方叫'&& touch
')
看起来你想要执行一个shell脚本,所以你需要封装上面的内容,例如:提供如下参数:
/bin/sh -c "mkdir -p /home/stuff/Keyring && touch /home/stuff/Keyring/keyring.gpg"
即。您正在执行/bin/sh
,并在shell命令行上提供命令。
或者更好的是,使用java.io.File
API或类似功能,并完全避免分支进程?