为什么许多语言中的"文件存在"方法对目录返回true?
时间:2020-03-05 18:49:29 来源:igfitidea点击:
我知道它在PHP中可以实现,而且我很确定它可以在Java中实现。我没有使用过.NET的最新版本,所以我不会为他们说话。看起来很尴尬,但是我想知道是否有根本原因。
解决方案
回答
原因之一是兼容性,任何完成"检查是否存在"的人都知道要排除目录。改变这种行为可能会使那些依赖该行为的人感到困惑。
其次,底层代码通常会在操作系统上检查操作系统中文件系统条目的目录中是否存在目录,目录与文件相同。换句话说,它正在目录中查找" xyz"条目,而不是目录中名为" xyz"的文件。
我怀疑,向后兼容性是主要原因。
回答
通常使用文件存在功能在写入之前先检查路径。在此用例中,文件的类型无关紧要,如果存在名为/ home / foo的目录,则将无法创建名为/ home / foo的文件
同样,PHP(我们提到的一种语言)根据我们关心的文件类型提供了多种功能:
file_exists()
将为文件,目录和符号链接返回TRUE- is_file()对于文件将返回TRUE,但是对于目录和符号链接则返回FALSE
- is_dir()对于目录将返回TRUE,但是对于文件和符号链接则返回FALSE
- is_link()对于符号链接将返回TRUE,而对于文件和目录则返回FALSE
回答
目录是文件也有一个正式的原因:
Files (or links to files) can be located in directories. However, more generally, a directory can contain either a list of files or a list of links to files. Within this definition, it is of paramount importance that the term "file" includes directories. This permits the existence of directory hierarchies, i.e., directories containing subdirectories.
来自维基百科,计算机文件