Java File对象说明

时间:2019-03-18 18:09:55

标签: java file

我试图理解为什么文件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这样的位置

请帮助一下。

谢谢!

1 个答案:

答案 0 :(得分:1)

首先,让我们细分代码的作用:

  1. file处创建一个名为\\abc.def.txt的对象
  2. 打印出true,如果file对象不是null 并且file.exists()返回true
  3. file1处创建一个名为\\abc.def.txt的对象
  4. 打印出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