为什么文件对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());
}
答案 0 :(得分:10)
在if
中,您正在检查文件是否不存在。如果它不存在那么它既不是文件也不是目录。
Java无法确定您的File对象是文件还是仅包含路径字符串的目录。 String可以表示文件或目录(您可以拥有名为“file.txt”的文件夹或具有相同名称的文件)。
答案 1 :(得分:2)
你在做什么是说它不存在。如果它不存在,则它既不是文件也不是目录。你应该使用你的逻辑错误:
if(file.exists()){
答案 2 :(得分:2)
您在不存在的文件对象上使用isDirectory()
和isFile()
。如果指定的文件尚不存在,则这两个方法都返回false
,根据文档。
答案 3 :(得分:0)
您的程序只打印出if(!file.exists())
,这意味着如果文件不存在,它会告诉您file.isFile()
。也就是说,因为该文件不存在,那么您的程序只打印出False。
答案 4 :(得分:0)
如果文件或目录存在,它怎么样?在Linux和Windows中(尽管Explorer本身不允许您包含.
),file.txt
是文件和目录的有效名称,因此Java无法知道您的身份(或者您的用户)打算使用它。