2011-02-27 67 views
2

我正在使用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赫利俄斯

+0

「我使用Eclipse + Java和努力我當前的項目下創建文件..。」這就是你已經出了問題。將它們放在user.home的子目錄中。 –

回答

7

文件DIR =新的文件( 「」); 表示名稱爲「空字符串」的文件,並且當然這個文件不存在,它不是目錄。 要引用當前目錄,請使用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| 
+0

我在這裏添加了一個代碼示例。 – Moisei

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.

原因#1作品是因爲任何的相對路徑(即,不與/或驅動器啓動的路徑),可以通過將其與當前目錄結合製成絕對的。所以:

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

相關問題