2013-07-26 25 views
0

在Mac上,OSX,當我做的:文件存在不工作的時候指定路徑

File file = new File("ah/myfile.text"); 

我可以這樣做:

file.getParent() 

我得到

ah 

但如果我做

file.exists() 

我收到假退回。

爲什麼?

+3

嘗試打印文件的規範路徑存在父。我敢打賭,這並不意味着你認爲它做了什麼。 –

+0

打印路徑。此外,父目錄存在,但文件本身不存在。含義文件夾「ah」存在,但「myfile.text」不存在(至少在File類所指向的目錄中)。 –

+0

'File'表示一個字符串路徑,而不是實際的文件系統文件。 Java 7的NIO API在新的類路徑中更明顯。考慮使用那個 –

回答

2

getParent()只是解析給定的路徑並刪除最後一個段的最後一個斜槓。然而exists()會執行真正的檢查。我認爲,yor文件確實不存在於這個位置。要檢查您的當前目錄,請執行新的File(「。」)。getAbsolutePath()並相應地修改您的路徑。

0
File file = new File("ah/myfile.text"); 

System.out.println(file.getParent()); 
System.out.println(file.exists()); 

輸出:

ah 
false 

我得到相同的結果。獲取父級必須將路徑解析爲字符串,即使該文件和/或目錄不存在。

+0

請使用代碼格式設置代碼,輸入/輸出和結構化文檔,如HTML或XML。爲此,請選擇樣本並單擊郵件發佈/編輯表單上方的「{}」按鈕。 –

+0

安德魯 - 會做!謝謝您的幫助。 – JBuenoJr

0

A File沒有必要存在。它可以是對系統中已存在的文件的引用,也可以是可能存在於系統中的文件。

你在說的是你有一個ah/myfile.text(潛在)文件的路徑,但可能是文件和父目錄都不存在。雖然它的父母仍然是ah/

您還可以檢查是否做file.getParentFile().exists();