[英]Where to use resolve() and relativize() method of java.nio.file.Path class?
[英]Path.resolve(other) java.nio.file.Path method
直接來自此API :
解決
路徑解析(路徑其他)
根據此路徑解析給定路徑。
如果另一個參數是絕對路徑,則此方法通常會 返回其他參數。 如果other是空路徑,則此方法通常會返回此路徑。 否則,此方法將此路徑視為目錄,並針對此路徑解析給定路徑。 在最簡單的情況下,給定路徑沒有根組件,在這種情況下,此方法將給定路徑連接到此路徑,並返回以給定路徑結束的結果路徑。 在給定路徑具有 根組件的情況下,解決方案高度依賴於實現 ,因此未指定。
(強調我的)
這里有一點矛盾,首先他們說:
如果另一個參數是絕對路徑,則此方法通常會返回其他參數。
然后他們說:
在給定路徑具有根組件的情況下,解決方案高度依賴於實現,因此未指定。
絕對路徑是否必須包含根組件才能成為這樣的組件? 提前致謝。
對你的問題的簡短回答是否定的,絕對路徑不需要有根組件,但是,取決於提供者,它可能。
如果我們查看UnixPath的源代碼 ,我們確實看到,如果它是一個絕對路徑,那么它將返回一個根組件,如果它是一個絕對路徑,它將只返回一個根組件。
但是,並不要求以這種方式實施。 理論上至少,getRoot()可以返回一些東西,而isAbsolute()則返回false。 在此,結果是不確定的。 或者,將其放在真值圖表格中:
Result of resolve() when:
getRoot()==null getRoot()!=null
isAbsolute()==true defined defined
isAbsolute()==false defined undefined
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.