我试图通过cmd行将几个目录传递给我的java应用程序。
这两个目录是:
\ ############## \ Valuations \ Production \ CMRM-VC-FI \ Bondzilla-Snaps \ 2016年4月\ \ ######### \首页\ A ####### \桌面\ autorbtest.csv (我已将目录的某些部分涂黑了)
因为第一个目录在末尾附近有空格,所以java将第一个目录解释为两个单独的args。我试图在目录周围添加双引号(")但是java仍然将空格解释为单独的arg。
我认为它与目录开头的双反斜杠有关。
任何帮助都会很棒。感谢
答案 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