2017-09-01 60 views
0

我是Java中學習IO和NIO的新手。java中IO和NIO的路徑和路徑

我不知道什麼

  • java.nio.file.Pathjava.nio.file.Paths之間的區別?
  • PathPaths之間的差額?

謝謝任何​​解釋。

+0

[Path](https://docs.oracle.com/javase/8/docs/api/java/nio/file/Path.html)和[Paths](https://docs.oracle.com/) JavaSE的/ 8 /文檔/ API/JAVA/NIO /文件/ Paths.html)。 – Kayaman

+0

@歌曲請密切關注你的軟件包名稱。沒有「基於流的io」或「java.io.file.Paths」類。包含「基於塊的io」傳輸的「新IO」位於java.nio.file.Paths下。基本上,「新IO」爲Java添加了兩件事:基於塊的傳輸和強大的Path系統。舊的「java.io」系統有一個Path系統,主要建立在字符串操作和File概念上(File不需要存在,可以是一個目錄)。 –

回答

0

Path是一個表示路徑的類。任何你通常已經有Path的地方都涉及到這裏的方法。

路徑是一組實用程序。這些實用程序會從其他類型的輸入中生成Path對象。這些實用程序不需要提前Path。它們是常用的常用代碼的便捷包裝,以減少對剪貼的需求。

下面是使用Paths的示例:

/* I have a String, but need a Path */ 
Path path = Paths.get("/home/user/.config"); 

下面是使用Path的示例:

/* I have a Path, but need a String */ 
String name = path.toString(); 

爲什麼需要像Paths一個工具類的原因是一個數字的一​​個組合的因素:

  1. Path是一個接口,因此它的構造函數的直接調用是不可能的;因爲它沒有構造函數。
  2. String是最後一個類,修改它的類可能會比創建實用類更難作爲替代。因此,雖然"/home/user/.config".toPath()可能是一種有效的面向對象的處理方式,但遺留代碼可以防止在沒有更多考慮的情況下添加該方法。
  3. URI的壓力與上述String中所述的壓力類似。

當他們添加到NIO Path類中時,他們希望他們的代碼被檢查並集成到核心Java庫中。

的東西,很容易讓別人添加到庫具有以下特點:

  1. 你不跟圖書館的現有部分混亂的方式,通過建立庫調用接口暴露(這樣做會破壞圖書館的用戶,因爲現在他們需要重寫他們的程序)。
  2. 你有一個退出的計劃,很容易(這是至關重要的,因爲你可能無法按時交付)

如果他們把修改StringURI的方法有getPath(...)功能,那麼他們會增加將他們的代碼集成到Java標準庫中的困難。

+0

路徑是一個集合,如果'utilities',你引用'import java.io.file.paths'? – Songs

+0

@歌曲我指的是'java.nio.file.Paths'「舊」io /文件包下沒有路徑。我還更新了這個問題,以瞭解與現有圖書館合作時所面臨的壓力。 –