2013-09-16 65 views
4

直接從這個APIPath.resolve(其他)java.nio.file.Path方法

決心

路徑的決心(路徑等)

若要針對這條道路給定的路徑。

如果其他參數是絕對路徑,那麼這種方法平凡 返回其他。如果其他是一個空路徑,那麼這個方法平凡 返回此路徑。否則,此方法將此路徑視爲 目錄,並根據此路徑解析給定的路徑。在 簡單的情況下,給定的路徑不具有根組件,在這種情況下 此方法加入給定的路徑向此路徑,並返回與給定的路徑結束的 生成的路徑。 當給定的路徑具有 根組件然後分辨率是高度依賴於實現 ,因此未指定的。

(重點煤礦)

有一點點在這裏有矛盾的,首先他們說:

  1. 如果其他參數是一個絕對路徑,則此方法 平凡返回其他。

    ,然後他們說:

  2. 如果給定的路徑有一個根組件然後分辨率是高度依賴於實現的,因此未指明。

不是絕對路徑必須包含根組件才能做到這一點嗎? 在此先感謝。

回答

2

簡短的回答你的問題是沒有,絕對路徑並不需要有一個根組件,然而,根據不同的供應商,它可能。

如果我們看source code for UnixPath,我們可以看到,如果它是絕對路徑,那麼它將返回一個根組件,如果它是絕對路徑,它將只返回一個根組件。

然而,沒有要求,它通過這種方式來實現。至少在理論上,getRoot()返回某些內容是可能的,而isAbsolute()則返回false。在此,結果是不確定的。或者,把它在一個實況地圖形式:

Result of resolve() when: 
        getRoot()==null getRoot()!=null 
isAbsolute()==true defined   defined 
isAbsolute()==false defined   undefined