【发布时间】:2017-03-11 13:50:16
【问题描述】:
我有一个应用程序接收路径作为命令行参数。路径可以包含空格,因此可以用引号发送。我需要验证这个路径是否正确,所以我从 'File' 类执行 'exists' 方法:
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:\folder”存在)。注意最后的斜杠和引号:
> 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 类说路径不存在。第二个不带引号的例子效果很好。 参数路径有一个免费的用户版本,因此可以包含引号(如果路径有带空格的文件夹)和最后一个斜杠。
【问题讨论】:
-
\" 是转义的 "。研究字符转义。
-
你解决了这个问题吗?
-
好像talex解决方案有效,但是最后的两个斜线有点难看。无论如何,我还没有找到更好的方法来处理这个问题。
标签: windows cmd command-line-arguments