官术网_书友最值得收藏!

2.5.1 Path

Path表示的是一個目錄名序列,其后還可以跟著一個文件名。路徑中的第一個部件可以是根部件,例如/或C:\,而允許訪問的根部件取決于文件系統。以根部件開始的路徑是絕對路徑;否則,就是相對路徑。例如,我們要分別創建一個絕對路徑和一個相對路徑;其中,對于絕對路徑,我們假設計算機運行的是類Unix的文件系統:

靜態的Paths.get方法接受一個或多個字符串,并將它們用默認文件系統的路徑分隔符(類Unix文件系統是/,Windows是\)連接起來。然后它解析連接起來的結果,如果其表示的不是給定文件系統中的合法路徑,那么就拋出InvalidPathException異常。這個連接起來的結果就是一個Path對象。

get方法可以獲取包含多個部件構成的單個字符串,例如,可以像下面這樣從配置文件中讀取路徑:

注意:路徑不必對應著某個實際存在的文件,它僅僅只是一個抽象的名字序列。你在接下來的小節中將要看到,當你想要創建文件時,首先要創建一個路徑,然后才調用方法去創建對應的文件。

組合或解析路徑是司空見慣的操作,調用p.resolve(q)將按照下列規則返回一個路徑:

·如果q是絕對路徑,則結果就是q。

·否則,根據文件系統的規則,將“p后面跟著q”作為結果。

例如,假設你的應用系統需要查找相對于給定基目錄的工作目錄,其中基目錄是從配置文件中讀取的,就像前一個例子一樣。

resolve方法有一種快捷方式,它接受一個字符串而不是路徑:

還有一個很方便的方法resolveSibling,它通過解析指定路徑的父路徑產生其兄弟路徑。例如,如果workPath是/opt/myapp/work,那么下面的調用

將創建/opt/myapp/temp。

resolve的對立面是relativize,即調用p.relativize(r)將產生路徑q,而對q進行解析的結果正是r。例如,以“/home/cay”為目標對“/home/fred/myprog”進行相對化操作,會產生“../fred/myprog”,其中,我們假設..表示文件系統中的父目錄。

normalize方法將移除所有冗余的.和..部件(或者文件系統認為冗余的所有部件)。例如,規范化/home/cay/../fred/./myprog將產生/home/fred/myprog。

toAbsolutePath方法將產生給定路徑的絕對路徑,該絕對路徑從根部件開始,例如/home/fred/input.txt或c:\Users\fred\input.txt。

Path類有許多有用的方法用來將路徑斷開。下面的代碼示例展示了其中部分最有用的方法:

正如你已經在卷Ⅰ中看到的,還可以從Path對象中構建Scanner對象:

注意:偶爾,你可能需要與遺留系統的API交互,它們使用的是File類而不是Path接口。Path接口有一個toFile方法,而File類有一個toPath方法。

java.nio.file.Paths 7

·static Path get(String first,String...more)

通過連接給定的字符串創建一個路徑。

java.nio.file.Path 7

·Path resolve(Path other)

·Path resolve(String other)

如果other是絕對路徑,那么就返回other;否則,返回通過連接this和other獲得的路徑。

·Path resolveSibling(Path other)

·Path resolveSibling(String other)

如果other是絕對路徑,那么就返回other;否則,返回通過連接this的父路徑和other獲得的路徑。

·Path relativize(Path other)

返回用this進行解析,相對于other的相對路徑。

·Path normalize()

移除諸如.和..等冗余的路徑元素。

·Path toAbsolutePath()

返回與該路徑等價的絕對路徑。

·Path getParent()

返回父路徑,或者在該路徑沒有父路徑時,返回null。

·Path getFileName()

返回該路徑的最后一個部件,或者在該路徑沒有任何部件時,返回null。

·Path getRoot()

返回該路徑的根部件,或者在該路徑沒有任何根部件時,返回null。

·toFile()

從該路徑中創建一個File對象。

java.io.File.1.0

·Path toPath()7

從該文件中創建一個Path對象。

主站蜘蛛池模板: 涞水县| 昌黎县| 潍坊市| 滨州市| 赤水市| 中方县| 珠海市| 禹城市| 胶南市| 日喀则市| 吉安市| 搜索| 馆陶县| 定襄县| 敦煌市| 沙雅县| 嵩明县| 东辽县| 昌都县| 庄河市| 新密市| 阿尔山市| 曲阳县| 盐边县| 逊克县| 图片| 团风县| 镇沅| 东辽县| 鄢陵县| 延长县| 武山县| 尖扎县| 黑河市| 上犹县| 平原县| 镇巴县| 垣曲县| 会昌县| 当涂县| 台山市|