带有空格的Filepath作为Java参数

时间:2015-04-26 06:24:28

标签: java

我想做的是,

r.exec("xdg-open "+args[1]+"/QRCode.png");

但如果args[1]包含空格,则它不会按预期工作。我知道在shell脚本的情况下,可以使用"$path"来解决它。但我需要Java的解决方案。

3 个答案:

答案 0 :(得分:1)

尝试用引号包装路径:

r.exec("xdg-open \""+args[1]+"/QRCode.png\"");

答案 1 :(得分:1)

假设rRuntime,为此您必须使用带有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

是具有两个参数fooa的命令b;这样:

$ foo“a b”

是命令foo,其中包含一个参数a b