我想做的是,
r.exec("xdg-open "+args[1]+"/QRCode.png");
但如果args[1]
包含空格,则它不会按预期工作。我知道在shell脚本的情况下,可以使用"$path"
来解决它。但我需要Java的解决方案。
答案 0 :(得分:1)
尝试用引号包装路径:
r.exec("xdg-open \""+args[1]+"/QRCode.png\"");
答案 1 :(得分:1)
假设r
是Runtime
,为此您必须使用带有exec
参数数组的String[]
版本,以确保带空格的字符串被视为单个参数,例如:
r.exec(new String[]{"xdg-open", args[1]+"/QRCode.png"});
虽然您可能想要像shell一样传递一个带引号的字符串,String
Runtime.exec
版本的Runtime
uses a default StringTokenizer
to break up the string,但它无法识别带引号的字符串。
StringTokenizer
使用 $('.ui-tabs-active').removeClass('ui-tabs-active ui-state-active');
是您原始尝试失败的原因,因为它只是在空格处盲目划分。
答案 2 :(得分:1)
请勿使用Runtime.exec()
,请使用ProcessBuilder
:
final Path path = Paths.get(args[1], "QRCode.png").toAbsolutePath();
final ProcessBuilder pb = new ProcessBuilder("xdg-open", path.toString());
final Process p = pb.start();
此外,如果这是来自命令行,请不要忘记引用参数...
此:
$ foo a b
是具有两个参数foo
和a
的命令b
;这样:
$ foo“a b”
是命令foo
,其中包含一个参数a b
。