2014-03-14 32 views
3

我正好遇到問題我不明白:Path.getParent()爲null

Path path = Paths.get("somefile.txt"); 
System.out.println(path.getAbsolutePath()); 
System.out.println(path.getParent()); 

嗯,說實話,我調試一些代碼,我評估了運行時間和路徑此代碼解析爲WindowsPath實例,因此有方法getAbsolutePath可用。

當我運行代碼時,parent爲空,但absolutePath打印絕對路徑。所以如果對象知道絕對路徑並且有父目錄,爲什麼它返回null?

回答

3

你必須給/home/username/filename.txt代替somefile.txt

+0

這聽起來不錯。我只是不明白爲什麼WindowsPath有真實的路徑信息,但不使用它。 –

+0

@LeosLiterak改爲使用'path.getAbsolutePath()。getParent()'。或者做我們的工作,並從'path = path.getAbsolutePath();'開始,這樣''path'上的所有操作都更直觀。 –

6

根據的Javadoc的Path#getParent()方法:

返回父路徑,或空,如果這個路徑沒有父。

此方法不訪問文件系統;該路徑或其父可能不存在

這意味着"somefile.txt"在應用程序根目錄的上下文中沒有父路徑。

+0

我讀的javadoc很好,但getAbsolutePath不會返回真實路徑所以它訪問文件系統的完整路徑。 –

+0

我在說'getAbsolutePath()',但關於'getParent()':) –