我只是在阅读一些java书籍,并编写了一些用于实践的小程序,我创建了一个小代码来获取有关我输入的路径的信息,代码如下:
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);现在,在输入对话框中,当我输入C:时,结果是build, build.xml, manifest.mf, nbproject, src,但当我输入C:/时,它将显示C中目录和文件的完整列表。
奇怪的是,D驱动器和其他驱动器没有发生这种情况(即D:/和D:的结果是相同的),请解释一下发生了什么?
更新在使用C#的WPF中也会发生!
发布于 2012-04-26 18:29:15
C:的意思是“当前在驱动器C:上选择的任何目录”。在您的例子中,它可能是您的应用程序正在运行的目录。
在您的情况下,D:与D:/是相同的,因为根目录是D:中的当前工作目录。
发布于 2012-04-26 18:30:23
这实际上不是一个java问题,而是一个windows/dos问题。
解释可以归结为切换驱动器的旧dos命令。
键入驱动器字母后加上冒号是在dos中更改驱动器的命令,因此“命令”C:什么也不做,因为您的工作dir已经在C驱动器上了。本机接口返回给JRE的‘目录’与使用路径“(即工作目录)相同。
另一方面,向C驱动器的根目录添加斜杠,这是一个正确的路径,因此本机接口为您的JRE提供了这个目录。
如果您转到dos命令(windows>run>cmd)并键入C:,您将看到它接受该命令,但不改变目录,当然,除非您当前位于不同的驱动器上。
希望这能帮上忙。
https://stackoverflow.com/questions/10339098
复制相似问题