Java File.exists()与File.isFile()
我无法想到该方法java.io.File.exists()
或Java
7中等效方法的实际用例java.nio.file.Files.exists(Path)
。看来,isFile()
或isDirectory()
会在所有情况下最好(或canRead()
,canWrite()
等等)。
例如,如何检查Java中是否存在文件?,第二个答案指出,接受的答案似乎很愚蠢。
任何人都可以举一个例子,在 不 知道某物是文件还是目录的 情况 下,知道某物存在是有用的吗?
编辑:我知道做什么File.exists()
。我的问题是,该功能 能帮助某人?我正在搜索一个示例,例如“
File.exists()
在_ _ _ _
_时使用,因为在这种情况下既不添加任何值,File.isFile()
也不使用File.isDirectory()
”。
回想起来,我认为我在这里的困惑是关于File
该类的JavaDoc中的两个看似矛盾的语句。第一句话将类定义为:
文件和目录路径名的抽象表示。
这听起来很明显的二分法。但在更远的地方,文档会用
此类的实例可以表示也可以不表示实际的文件系统对象,例如文件或目录。
我认为第三个文件系统对象的示例将在文档中提供极大帮助;但是该类别似乎甚至都没有名称,导致Files
该类的JavaDoc措辞尴尬:静态方法的集合,
对文件,目录或其他类型的文件进行操作的文件。
在接受的答案中,@ koral将这些其他类型称为“特殊文件”。这似乎很适合我。它们是如此特别,我不知道它们的存在。
回答:
回答@ jaco0646的最后一个问题:
使用File.exists()
喜欢命名管道,插座或设备文件。
这些都不是普通的文件,也没有目录,也没有符号链接这样既File.isFile()
和File.isDirectory()
返回false
时File.exists()
将返回true
。例如/dev/null
(在Unix兼容的操作系统上)是一个设备文件。
从理论上讲,处理大量文件时 性能差异。这也取决于文件系统,JVM实现细节,操作系统等。
例如。在Android
File.exists()
上通过使用access()
while
File.isFile()
/File.isDirectory()
use
系统调用实现stat()
。在这种情况下,处理stat()
输出需要比用户空间更多的逻辑access()
。
以上是 Java File.exists()与File.isFile() 的全部内容, 来源链接: utcz.com/qa/428947.html