当前位置: 首页 > 面试题库 >

Java File.exists()与File.isFile()

云宝
2023-03-14
问题内容

我无法想到该方法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()



 类似资料:
  • 在C语言中,假设每个算法被赋予完全相同的一组进程,那么先到先得、最短作业优先和循环之间的周转时间是否相等?还是调度算法不同?

  • 问题内容: 为了为 HTML5 Doctype 定义字符集,我应该使用哪种表示法? 短: 长: 问题答案: 在HTML5中,它们是等效的。使用较短的一个,更容易记住和键入。浏览器支持很好,因为它是为向后兼容而设计的。

  • 连接的多个输入都相当于Yes的时候才会输出Yes。 用法 Your browser does not support the video tag. 案例:小闹钟 功能:今天15:10:00,响起猫叫声小闹钟 工作原理 当所有的输入都是Yes的时候,与节点才输出Yes。

  • 问题内容: 似乎有三种 相同的 方法可以独立于平台获取依赖于平台的“文件分隔符”: 我们如何决定何时使用哪个? 它们之间甚至有什么区别吗? 问题答案: 可以通过调用命令行参数或使用命令行参数覆盖 获取默认文件系统的分隔符。 获取默认文件系统。 获取文件系统的分隔符。请注意,作为一种实例方法,在需要代码在一个JVM中对多个文件系统进行操作的情况下,可以使用该方法将不同的文件系统传递给代码(而不是默认

  • 问题内容: 我今天刚刚与一些同事讨论了python的db-api fetchone vs fetchmany vs fetchall。 我确定每个应用程序的用例都取决于我正在使用的db-api的实现,但是总的来说,fetchone,fetchmany,fetchall的用例是什么? 换句话说,以下等效项是什么?还是其中之一比其他人更受青睐?如果是这样,在哪些情况下? 问题答案: 我认为这确实取决于