2017-07-30 66 views
0

我開始使用java.nio.*,現在我想知道:爲什麼java.nio.Paths.get(..)不會將java.nio.Path對象作爲輸入?爲什麼java.nio.Paths.get(..)不將java.nio.Path對象作爲輸入?

現在我所有的時間做這樣的事情:

final Path basePath = Paths.get("/some/base/path"); 
final Path filePath = Paths.get(basePath.toString(), "file.txt"); 

所以無論是我忽略了一些真正的基礎或API設計者完全忘了這個選項,我強烈懷疑。

+1

爲什麼要那樣做的資源?已經有一個路徑對象消除了對Paths.get的需求,因爲它所做的只是創建一個路徑對象。 –

+2

由於'Paths.get()'將參數轉換爲'Path',因此不需要將'Path'作爲參數。或者我誤解了你的問題? – SilverNak

+0

你爲什麼試圖將路徑轉換爲路徑?它已經是一條路徑。 – EpicPandaForce

回答

4

這個類是一個工廠方法來創建Path對象,其意圖是在Javadoc清楚地表明:

這類由該通過轉換一個返回路徑 靜態方法專門路徑字符串或URI

這將是目標調用此方法,如果我們已經有了一個Path對象


從基站Path解決資源Path,你不需要再使用Paths類。
Path方法提供Path(比較,Path創建兩個Path s等)上的操作,如Path解析。

Path resolve(Path other); 

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

或者更簡單地說,它從其中兩個創建了一個Path

假設位於D:/my-resources/one-resource

Path relativePathResource = Paths.get("one-resource"); 
Path absolutePathResource = Paths.get("D:/my-resources").resolve(resource); 
+0

就像我的示例中:我有一個基本路徑(作爲'Path'對象),我想要構建'Path'對象一個子文件夾。爲什麼不應該爲此使用'Path'? – Hannes

+0

因爲Path已經有一個方法來做到這一點:'resolve()'。我更新以顯示它的用法。 – davidxxx

相關問題