我试图理解为什么文件obj在下面返回为true。
我的文件“ abc.def.txt”在Windows 10中位于C:
File file = new File("\\abc.def.txt");
System.out.println(file != null && file.exists()); // Returns true
File file1 = new File("C:\\abc.def.txt");
System.out.println(file1 != null && file1.exists()); //Returns true
我的file1应该返回true,因为该位置存在一个名为“ abc.def.txt”的文件。
但是我很困惑为什么文件对象返回为true,而不是false,因为在Windows中,将没有\ abc.def.txt这样的位置
请帮助一下。
谢谢!
答案 0 :(得分:1)
首先,让我们细分代码的作用:
file
处创建一个名为\\abc.def.txt
的对象true
,如果file
对象不是null
并且,file.exists()
返回true
file1
处创建一个名为\\abc.def.txt
的对象true
,如果file1
对象不是null
并且,file.exists()
返回true
为响应您的问题,在Windows中,以\
开头的假设是您要进入“根”级目录。在您的示例中,除非另有说明,否则应为C:
。
您正在创建两个文件,并且您的True / False检查实际上是在查看它们是否存在,而不是在它们所在的位置。如果要检查它们的位置,可以执行以下操作:
File file = new File("\\abc.def.txt");
boolean check = new File(directory, file).exists();
System.out.println(check); // Returns true
File file1 = new File("C:\\abc.def.txt");
boolean check1 = new File("C:\\", "abc.def.txt").exists();
System.out.println(check1); //Returns true