繁体   English   中英

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

[英]File returns always false for isDirectory and isFile in Java

为什么文件对于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无法知道你(或你的用户)的意图用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM