对于isDirectory,文件返回false,而Java中的isFile

为什么文件对于isFile()方法返回false,即使它是文件。 当它是目录时,它为isDirectory()返回false。 难道我做错了什么? 我测试的这些文件/目录不存在,我需要创建它们,所以这就是我测试是否应该使用createFile()mkdir()

 File file = new File("C:/Users/John/Desktop/MyDir/file.txt"); if(!file.exists()) { System.out.println("Is directory : " + file.isDirectory()); System.out.println("Is file : " + file.isFile()); } 

if你正在检查文件是否不存在。 如果它不存在那么它既不是文件也不是目录。

Java无法确定您的File对象是文件还是仅包含路径字符串的目录。 String可以表示文件或目录(您可以拥有名为“file.txt”的文件夹或具有相同名称的文件)。

你正在做的是说它是否不存在。 如果它不存在,则既不是文件也不是目录。 您的逻辑肯定是错误的,因为您应该使用:

 if(file.exists()){ 

您在不存在的文件对象上使用isDirectory()isFile() 。 如果指定的文件尚不存在,则根据文档,这两种方法都返回false

你的程序只打印出if if(!file.exists()) ,这意味着如果文件存在,它会告诉你file.isFile() 。 也就是说,因为该文件不存在,那么您的程序只打印出False。

它是如何存在的文件或目录? 在Linux和Windows中(尽管Explorer本身不允许你包含. ), file.txt是文件和目录的有效名称,因此Java无法知道你(或你的用户)的意图用它。