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

时间:2016-04-25 15:57:52

标签: java command-line-arguments

我试图通过cmd行将几个目录传递给我的java应用程序。

这两个目录是:

\ ############## \ Valuations \ Production \ CMRM-VC-FI \ Bondzilla-Snaps \ 2016年4月\ \ ######### \首页\ A ####### \桌面\ autorbtest.csv (我已将目录的某些部分涂黑了)

因为第一个目录在末尾附近有空格,所以java将第一个目录解释为两个单独的args。我试图在目录周围添加双引号(")但是java仍然将空格解释为单独的arg。

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

任何帮助都会很棒。感谢

1 个答案:

答案 0 :(得分:0)

我猜测,根据上面的输入,当使用带空格的路径周围的引号时,以反斜杠结束,实际上OP接收一个参数而不是两个。引用带空格的路径会起作用,但如果最终路径以反斜杠结束则不会。可能因为使用反斜杠作为路径分隔符而永远诅咒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 \有一个空格\结束" \某些其它\路径\这里

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

时的示例
  

[0]:\ somePath \有一个空格\结尾\
  [1]:\ someother \ Path \ Here