2016-04-25 71 views
-3

我正試圖通過cmd行將幾個目錄傳遞給我的Java應用程序。無法通過命令行將目錄傳遞到Java應用程序

這是兩個目錄:

\ ############## \估值\生產\ CMRM-VC-FI \ Bondzilla - 捕捉\ 2016年4月\ \# ######## \ Home \ A ####### \ Desktop \ autorbtest.csv (我已經將目錄的某些部分遮住了)

因爲第一個目錄的末尾有空格,java將第一個目錄解釋爲兩個單獨的參數。我試圖把周圍的目錄(「)雙引號但Java仍然要解釋的空間作爲單獨的精氨酸。

我認爲它有事情做與目錄開頭的雙反斜線。

任何幫助將是巨大的。謝謝

+0

您應該顯示解析輸入 – karina

+0

的代碼,以及將參數傳遞給主函數。 java中的main函數接受1個參數,它是string [] args。 java將參數加載到數組中,我不解析輸入。 java解釋參數的方式僅僅是通過空格。在這裏顯示我的代碼在這裏沒有多大關聯,我認爲 – user3626038

+0

當然這會有很大的關聯性。我們在這裏查看代碼,而不是目錄結構。沒有人會(無法)在沒有任何代碼的情況下幫助你。 – f1sh

回答

0

我基於上述輸入猜測的是,使用與空間的路徑,以反斜槓結束周圍的報價時,實際的OP收到一個參數而不是兩個,用空格引用一個路徑將起作用,但如果最後的路徑以反斜槓結束,則不會。唱反斜槓作爲路徑分隔符。

指定路徑############## \估值\生產\ CMRM-VC-FI \ Bondzilla - 捕捉\ 2016年4月\,你需要做

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]:\一些其它\路徑\這裏

+0

也可以這樣做\ ############## \ Valuations \ Production \ CMRM-VC-FI \ Bondzilla-Snaps「2016年4月」\ – karina

+0

@karina,的確可以,但可以如果它們中有多個包含空格的段,它會變得更加複雜,因爲它可能需要引用多個段。我個人並不認爲有必要有最後的斜線,但這是一個不同的故事。 – KevinO

+0

我也同意不需要結尾的斜線,但我想最大的擔心是,這在技術上是用戶輸入......它可能是任何東西。 – karina

相關問題