首页
学习
活动
专区
圈层
工具
发布

C:和C:/
EN

Stack Overflow用户
提问于 2012-04-26 18:16:54
回答 2查看 1.2K关注 0票数 6

我只是在阅读一些java书籍,并编写了一些用于实践的小程序,我创建了一个小代码来获取有关我输入的路径的信息,代码如下:

代码语言:javascript
复制
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中也会发生!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-26 18:29:15

C:的意思是“当前在驱动器C:上选择的任何目录”。在您的例子中,它可能是您的应用程序正在运行的目录。

在您的情况下,D:D:/是相同的,因为根目录是D:中的当前工作目录。

票数 10
EN

Stack Overflow用户

发布于 2012-04-26 18:30:23

这实际上不是一个java问题,而是一个windows/dos问题。

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

键入驱动器字母后加上冒号是在dos中更改驱动器的命令,因此“命令”C:什么也不做,因为您的工作dir已经在C驱动器上了。本机接口返回给JRE的‘目录’与使用路径“(即工作目录)相同。

另一方面,向C驱动器的根目录添加斜杠,这是一个正确的路径,因此本机接口为您的JRE提供了这个目录。

如果您转到dos命令(windows>run>cmd)并键入C:,您将看到它接受该命令,但不改变目录,当然,除非您当前位于不同的驱动器上。

希望这能帮上忙。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10339098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档