Java 如何确定文件是否为文件?

Java 如何确定文件是否为文件?,java,Java,Java方法isFile()和isDirectory()仅在文件或目录实际存在时才起作用如果它不存在呢 除了这些方法,还有其他选择吗 例如: File f=new File(var); 现在,var是从运行时生成的任何东西,因此我不知道它是否是文件,您可以在不存在文件或路径的情况下实际初始化对象。我想了解的是:即使文件不存在,我如何确定它是否真的是一个文件?如果我确定是否有扩展名,我可能可以判断,但在Linux中,我认为有些文件没有扩展名,我需要在所有平台上工作。如果文件不存在,那么它既不是普

Java方法
isFile()
isDirectory()
仅在文件或目录实际存在时才起作用如果它不存在呢

除了这些方法,还有其他选择吗

例如:

File f=new File(var);

现在,
var
是从运行时生成的任何东西,因此我不知道它是否是文件,您可以在不存在文件或路径的情况下实际初始化对象。我想了解的是:即使文件不存在,我如何确定它是否真的是一个文件?如果我确定是否有扩展名,我可能可以判断,但在Linux中,我认为有些文件没有扩展名,我需要在所有平台上工作。

如果文件不存在,那么它既不是普通文件,也不是目录……如果它实际上不存在,那么问它是什么类型的文件是没有意义的

如果您创建了该文件,那么您可以决定该文件的类型;如果不创建文件,那么它就不存在。

调用
exists()
方法确定文件或目录是否存在,或者调用
getPath()
获取
文件
对象指向的路径(无论该路径是否存在)

更新以获取添加到问题中的其他信息。

返回: true当且仅当此抽象路径名表示的文件存在且为普通文件时;假否则

因此,不需要额外检查exists()

最后输入:
只需放弃文件扩展名的概念。它实际上只是文件名。它只是用作操作系统上其他程序的元数据,以便某些文件可以与某些程序关联/打开。

您可能需要检查var是否是表示有效路径的有效字符串。可能类似于if(var!=null&&var instanceof String&((String)var).matches(“regex用于文件系统,底层依赖于系统”){ //在这里做点什么 }


然后,您可以使用exists()方法检查文件是否有效。

是的,我对这句话感到困惑,我认为它也表示文件的文件名,因此,如果路径+文件名不存在,这是我在本文中理解的,对吗?您的示例没有帮助。不存在的文件系统对象既不是文件也不是目录。这就像说我想知道我有什么型号的保时捷,即使我没有保时捷。扩展是不相关的。是的,没有扩展名的文件在Unix上非常常见。我相信,它们也可以存在于Windows上,不过碰巧不太常见。同样,也可以有扩展名的目录(例如:“rc2.d”或“Safari.app”),因此没有可靠的方法仅仅从一个名称来判断它是指一个目录还是一个文件。即使在这个示例中,询问
file
对象是否代表一个文件或一个目录仍然没有意义……这两者都不是。如果调用
f.createNewFile()
,则它将成为普通文件;如果调用
f.mkDir()
,则它将成为一个目录。