C:和C之间的区别/

我刚刚读了一些java书,并做了一些练习的小程序,我创build了一个小代码来获取有关我input的path的信息,代码是:

String path = JOptionPane.showInputDialog("Enter Path to analyze"); File file = new File(path); if (file.exists()) { String result = ""; if (file.isDirectory()) { result += "Path is directory\n "; String [] resList = file.list(); for (String s : resList) { result += s + ", "; } } if (file.isFile()) { result += "Path is a file\n"; } JOptionPane.showMessageDialog(null, result); 

现在在input对话框中,当我inputC: ,结果是build, build.xml, manifest.mf, nbproject, src ,但是当我inputC:/时,会显示C中完整的目录和文件列表。

奇怪的是,它不会发生与D驱动器和其他驱动器(即结果是相同的D:/和D :),发生了什么事情请解释?

更新同样发生在WPF使用C#!

C:表示“驱动器C:上当前选择的目录C: ”。 在你的情况下,它可能是你的应用程序运行的目录。

D:D:/相同,因为根目录 D:的当前工作目录。

这不是一个真正的java问题,而是一个Windows / DOS的问题。

解释归结为用于切换驱动器的旧dos命令。

键入一个驱动器号后跟一个冒号是一个命令来更改dos中的驱动器,因此“命令” C:什么也不做,因为你的工作目录已经在C驱动器上了。 本地接口返回给JRE的'目录'和你使用路径“”,即你的工作目录一样。

另一方面,添加一个斜杠,这是一个适当的路径,到您的C驱动器的根,因此您的JRE由本地接口给这个目录。

如果你进入一个dos命令(windows> run> cmd)并输入C:你会看到它接受这个命令,但是不会改变目录,除非你当前正在使用不同的驱动器。

希望有所帮助。