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()返回falseFile.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

回到顶部