无法通过命令行将目录传递到 java 应用程序

Trouble passing directories into java application via command line

我正在尝试通过 cmd 行将一些目录传递到我的 java 应用程序。

这是两个目录:

\##############\Valuations\Production\CMRM-VC-FI\Bondzilla-Snaps\April 2016\ \#########\Home\A#######\Desktop\autorbtest.csv (我把部分目录涂黑了)

因为第一个目录在末尾附近有一个 space,java 将第一个目录解释为两个单独的参数。我试图在目录 (") 周围加上双引号,但 java 仍然将 space 解释为一个单独的参数。

我认为这与目录开头的双反斜杠有关。

任何帮助都会很棒。谢谢

我猜测,根据上述输入,当在 space 路径周围使用引号时,以反斜杠结尾,实际上 OP 收到 one参数而不是两个。用 spaces 引用路径会起作用,但如果最终路径以反斜杠结尾则不会。愿 Windows 因使用反斜杠作为路径分隔符而永远受到诅咒。

要指定路径##############\Valuations\Production\CMRM-VC-FI\Bondzilla-Snaps\April 2016\,您需要做

java WHAT_EVER_ARGS CLASSNAME "\##############\Valuations\Production\CMRM-VC-FI\Bondzilla-Snaps\April 2016\" "other file"

作为检查,您可以在 main 方法中添加:

    int i = 0;
    for (String arg : args) {
        System.out.printf("[%d]: %s%n", i++, arg);
    }

您应该会看到预期参数的数量。如果您不将尾部反斜杠加倍,您将只会看到一个输出。

参数为:"\somePath\Has a Space\At end\" "\someother\Path\Here"

时的例子

[0]: \somePath\Has a Space\At end" \someother\Path\Here

参数为:"\somePath\Has a Space\At end\" "\someother\Path\Here"

时的例子

[0]: \somePath\Has a Space\At end\
[1]: \someother\Path\Here