我知道它在PHP中,我很确定它在Java中。我没有使用.NET的最新版本,所以我不会为他们说话。这看起来很尴尬,但我想知道是否有这个原因。为什么许多语言中的“文件存在”方法对于目录返回true?
1
A
回答
3
一个原因是兼容性 - 任何已经完成'检查存在'的人都知道排除目录;改变这种行为可能会混淆那些依赖这种行为的人。其次,底层代码通常会在文件系统条目catlog中对操作系统进行检查 - 对于操作系统,目录与文件相同。换句话说,它正在寻找目录中'xyz'的输入,而不是目录中名称'xyz'的文件。
向后兼容是主要原因,我怀疑。
1
在写入之前,通常使用“文件存在”功能来检查路径。在这个用例中,文件的类型是不相关的,如果有一个名为“/ home/foo”的目录,你将不能创建一个名为“/ home/foo”的文件。另外PHP也是其中一个
file_exists()
将返回TRUE文件,目录和符号链接is_file()
将返回TRUE的文件,但是假的:你提到的语言,这取决于文件的你在乎那种(S)提供了一些功能目录和sym链接is_dir()
将为导演返回TRUE S,但假文件和符号链接is_link()
将返回TRUE符号链接,但假文件和目录
2
还有一个正式的原因目录是一个文件:
位于目录中的文件(或指向文件的链接)可以是 。但是,更多 通常,一个目录可以包含 文件列表或链接到文件的列表 。在此定义中,重要的是术语“文件” 包括目录。这允许目录层次结构 存在,即包含 子目录的目录。
维基百科,Unix哲学的‘Computer file’
0
部分原因是, “everything is a file”。这在一定程度上也影响了其他环境。
相关问题
- 1. 为什么方法.hasNext()返回true?
- 2. 为什么语言不允许多个返回值?
- 3. 为什么JS中的true =='true'语句返回false?
- 4. 为什么包括?方法在dev中返回true,在Heroku中返回false?
- 5. 为什么PHP中的ctype_space对于某些数值返回“true”?
- 6. PrintStream对象的checkError()方法在什么情况下返回true?
- 7. 为什么sameElements对集合返回true?
- 8. 对于不存在的文件,file.delete()是否返回true或false?
- 9. 为什么在ActionMode中isItemChecked()返回true?
- 10. 为什么文件存在语句在android中不是true?
- 11. 在try块java中返回语句。什么会被方法返回,为什么?
- 12. 为什么[:lower:]在bash中的返回方式取决于文件的存在?
- 13. 为什么==返回true?
- 14. 为什么它返回true?
- 15. 为什么hasOwnProperty返回true
- 16. 为什么(true && 1)返回1,但(1 && true)返回true?
- 17. 为什么这个条件返回true?
- 18. 为什么Calendar()方法在相同日期返回true
- 19. 为什么.index文件存在于kafka-log目录中?
- 20. 为什么ruby为方法调用返回`true`?
- 21. QDir :: exists对无效目录返回true
- 22. isDirectory()对文件返回true
- 23. 为什么我的ruby方法总是返回true?
- 24. 为什么Stream.allMatch()对于空流返回true?
- 25. SecurityElement.IsValidText在“&”上返回true ...为什么?
- 26. 为什么scandir()为目录返回false?
- 27. 为什么$('#id')在id不存在的情况下返回true?
- 28. 为什么zipfile.is_zipfile在xlsx文件上返回True?
- 29. 为什么console.log(true && undefined)返回undefined而if(true && undefined)返回false?
- 30. 为什么for ...在语句中返回方法和属性?