1

我知道它在 PHP 中是这样,而且我很确定它在 Java 中也是如此。我没有使用过最新版本的 .NET,所以我不会为他们说话。这似乎很尴尬,但我想知道这是否有潜在的原因。

4

4 回答 4

3

一个原因是兼容性——任何做过“检查存在”的人都知道排除目录;改变这种行为可能会使那些依赖这种行为的人感到困惑。

其次,底层代码经常检查操作系统是否存在于文件系统条目的目录中——对于操作系统而言,目录与文件相同。换句话说,它在目录中查找“xyz”条目,而不是目录中名称为“xyz”的文件。

我怀疑,向后兼容性是主要原因。

于 2008-09-08T16:59:51.947 回答
2
于 2008-09-08T17:08:02.287 回答
1

通常使用“文件存在”函数在写入之前检查路径。在这个用例中,文件的类型无关紧要,如果有一个名为“/home/foo”的目录,您将无法创建一个名为“/home/foo”的文件</p>

此外,您提到的其中一种语言 PHP 提供了几个功能,具体取决于您关心的文件类型:

  • file_exists()将为文件、目录和符号链接返回 TRUE
  • is_file()将为文件返回 TRUE,但为目录和符号链接返回 FALSE
  • is_dir()将为目录返回 TRUE,但为文件和符号链接返回 FALSE
  • is_link()对于符号链接将返回 TRUE,但对于文件和目录将返回 FALSE
于 2008-09-08T17:06:29.340 回答
0
于 2012-02-22T00:49:46.727 回答