我刚刚读了一些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:
你会看到它接受这个命令,但是不会改变目录,除非你当前正在使用不同的驱动器。
希望有所帮助。