我有gpg命令加密文件
gpg --batch --yes -o abc.csv.gpg -r 'balu shanmukh' -e A2.java
在上面的命令
中--batch
--yes
-o
-r and -e are options
和 balu shanmukh 是值。
命令是动态准备的,命令是如上所述。此命令正在命令行中执行,但此命令从
运行时 Runtime.getRuntime().exec(command);
收到错误消息 as 用法:gpg [options] [filename]
他们对gpg类路径或其他任何问题没有问题,因为如果我删除了没有空格的值的单引号,则从java中正确执行该命令。
当我们有价值空间时,只有问题。然后它必须使用引用值,如果我使用它。 commad没有得到正确执行
我不明白这种行为? 任何人都可以帮助我理解这种行为
答案 0 :(得分:1)
不要使用Runtime().exec()
,也不要将命令创建为单字符串。相反,为ProcessBuilder
构建Process
,并将每个开关作为参数传递给您的命令。
这是一个简单的例子:
Process process = new ProcessBuilder("gpg", "--foo", "-r", "some_file_name").start();
int exitStatus = process.waitFor();
PS:正如其他人所说,请重新审视您的问题,并检查您认为可以回答问题的答案。人们会付出一些努力来回答。如果您认为他们有所帮助,请将他们投票,或将他们的答案视为回答您问题的答案 祝你好运,欢迎来到这里;)
答案 1 :(得分:0)
这是一个简单的例子:
Process process = new ProcessBuilder(“gpg”,“ - foo”,“ - r”,“some_file_name”)。start(); int exitStatus = process.waitFor();
很抱歉,但这并不能解释如何将单引号字符串作为参数传递。 即。通过'巴库'作为论据。 “'巴库'”不起作用......