为什么新文件(“”)不提供现有目录?

时间:2011-02-27 00:02:17

标签: java eclipse

我正在使用Eclipse + Java并尝试在我当前的项目下创建文件。我使用过new File("")并且不理解它的行为。

File dir = new File("");
System.out.println(dir.getAbsolutePath()+" | "+dir.isDirectory()+" | "+dir.exists());
String absolutePathname = dir.getAbsolutePath();
dir = new File(absolutePathname);
System.out.println(dir.getAbsolutePath()+" | "+dir.isDirectory()+" | "+dir.exists()); 

结果:

D:\workspace\jumbo-converters\jumbo-converters-compchem | false | false
D:\workspace\jumbo-converters\jumbo-converters-compchem | true | true

为什么我有两个具有相同绝对路径名的文件,其中一个存在而且其中一个不存在?

我正在使用Java 1.6和Eclipse Helios

2 个答案:

答案 0 :(得分:7)

文件目录=新文件(“”); 表示名称为“空字符串”的文件 当然这个文件不存在,也不是目录。 要引用当前目录,请使用File dir = new File(“。”); 看看这段代码:

File dir = new File("");
System.out.println(dir.getAbsolutePath()+" | "+dir.isDirectory()+" | "+dir.exists());
System.out.println("file name is: |" + dir.getName() + "|");
String absolutePathname = dir.getAbsolutePath();
dir = new File(absolutePathname);**
System.out.println(dir.getAbsolutePath()+" | "+dir.isDirectory()+" | "+dir.exists());
System.out.println("file name is: |" + dir.getName() + "|");

注意不同的文件名:

C:\Program Files (x86)\Java\jdk1.6.0_21\bin | false | false
file name is: ||
C:\Program Files (x86)\Java\jdk1.6.0_21\bin | true | true
file name is: |bin|

答案 1 :(得分:3)

因为,您提出以下问题:

  1. 如果我得到“”的完整路径,它是什么? D:\workspace\jumbo-converters\jumbo-converters-compchem

  2. “”是真正的目录吗? No.

  3. “”是否以某种方式存在? No.

  4. 如果我得到“D:\ workspace \ jumbo-converters \ jumbo-converters-compchem”的完整路径,它是什么? D:\workspace\jumbo-converters\jumbo-converters-compchem

  5. “D:\ workspace \ jumbo-converters \ jumbo-converters-compchem”是一个真正的目录吗? Yes.

  6. “D:\ workspace \ jumbo-converters \ jumbo-converters-compchem”是否以某种方式存在? Yes.

  7. #1工作的原因是因为任何相对路径(即,不以/或驱动器开头的路径)可以通过将其与当前目录组合而成为绝对路径。所以:

    "D:\workspace\jumbo-converters\jumbo-converters-compchem" + "" == "D:\workspace\jumbo-converters\jumbo-converters-compchem"