【发布时间】:2011-01-10 09:44:54
【问题描述】:
我正在运行 Windows,我正在尝试引用一个目录。我的功能是这样开始的:
File file = new File("C:\\somedir\\report");
if (!file.exists()) {
file.mkdirs();
}
doStuffWith(file);
当我尝试调用 listFiles 时,我在 doStuffWith 函数中遇到了 NullPointerException。好吧,我查看了 C:\somedir,发现了什么 - 有一个名为“report”的文件,没有扩展名,还有一个名为“report”的目录!似乎发生的事情是file 对象指的是报告文件,而不是目录。如何确保我指的是目录而不是文件?
【问题讨论】:
-
你试过 File file = new File("C:\\somedir\\report\\"); (注意尾部的斜杠)。不知道这是否可行,但值得快速构建和测试。
-
什么样的操作系统允许这样做?我的印象是 Windows 不允许这样做。您的目录是否有可能在名称中包含一些不可见的字符(例如空格)?
-
我只是尝试创建一个名为“Folder”的文件夹和一个名为“Folder”的无扩展名文件,Windows 抱怨它。我正在运行 Windows XP SP3 32 位。
-
@crosvenir:但要小心:仅仅因为 UI (explorer.exe) 不允许它并不意味着它不受支持。
-
哦,是的......很好。例如 explorer.exe 不允许您创建仅以扩展名作为名称的文件(即 .cvsignore),但文件系统确实支持它。