0
我有一個接收路徑作爲命令行參數的應用程序。該路徑可以包含空格,因此可以用引號引起來。我需要驗證,如果這條道路是正確的,所以我執行從「File」類「存在」的方法:奇怪的java命令行文件夾路徑問題
public static void main (String... args) {
System.out.println("arg=" + args[0]);
File f = new File(args[0]);
System.out.println("exists=" + f.exists());
}
當我運行與後續參數的應用程序,我得到這個結果(假設「C: \文件夾「存在)。用最後的斜槓和引號注意:
> java Test c:\folder
args=c:\folder
exists=true
> java Test c:\folder\
args=c:\folder\
exists=true
> java Test "c:\folder"
args=c:\folder
exists=true
> java Test "c:\folder\"
args=c:\folder
exists=false
我不明白最後一個例子會發生什麼。首先在args結果中不打印最終斜槓,然後File類表示該路徑不存在。沒有引號的第二個例子效果很好。 參數路徑有一個免費的用戶版本,所以它可能包含引號(如果路徑包含帶空格的文件夾)和最後一個斜槓。
\」是逃脫的「。研究角色轉義。 – rmlan
你能解決這個問題嗎? – ItamarG3
似乎talex解決方案的工作,但最後兩個斜線這有點醜陋。無論如何,我還沒有找到任何更好的方法來處理這個問題。 – user1151816