我有一个应用程序,它接收一个路径作为命令行参数。路径可以包含空格,因此可以使用引号进行处理。我需要验证此路径是否正确,因此我执行“存在”#39;来自' File'的方法类:
public static void main (String... args) {
System.out.println("arg=" + args[0]);
File f = new File(args[0]);
System.out.println("exists=" + f.exists());
}
当我使用follow参数运行应用程序时,我得到了这个结果(假设" 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类说该路径不存在。没有引号的第二个例子效果很好。 参数路径有一个免费的用户版本,因此可以包含引号(如果路径包含带空格的文件夹)和最终斜杠。
答案 0 :(得分:2)
这不是java问题,而是你的shell。 \
如果在Windows "
之前使用,则作为转义字符。要解决此问题,您可以将参数写为"c:\folder\\"
输出也很奇怪。当我做同样的事情时,我在最后一例中获得了args=c:\folder"
。