日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java NIO系列教程(十 五)Java NIO Path

發(fā)布時間:2023/12/3 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java NIO系列教程(十 五)Java NIO Path 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)載自? Java NIO系列教程(十 五)Java NIO Path

譯文鏈接? 譯者:章筱虎

Java的Path接口是Java NIO2 的一部分,是對Java6 和Java7的 NIO的更新。Java的Path接口在Java7 中被添加到Java NIO,位于java.nio.file包中, 其全路徑是java.nio.file.Path。

一個Path實例代表了一個文件系統(tǒng)中的路徑。一個路徑可以指向一個文件或者一個文件夾。一個路徑可以是絕對路徑或者是相對路徑。絕對路徑是從根路徑開始的全路徑,相對路徑是一個相對其他路徑的文件或文件夾路徑。相對路徑可能會造成一點混亂,但是不要擔心,在本文章中,我會詳細解釋相對路徑的。

不要混淆了文件系統(tǒng)中的路徑 和 操作系統(tǒng)中環(huán)境變量的path路徑。java.nio.file.Path實例與環(huán)境變量中的path沒有任何關(guān)系。

在很多地方j(luò)ava.nio.file.Path接口和java.io.File類是相似的,但是它們有幾個主要的不同。 在很多類中,你可以使用Path 接口替換 file 類使用。

創(chuàng)建一個Path實例

要想使用 一個 Path實例,你必須要先創(chuàng)建一個Path實例,可以使用Paths類 (java.nio.file.Paths)中的靜態(tài)方法 Path.get()創(chuàng)建。 下面是一個例子

import java.nio.file.Path; import java.nio.file.Paths;public class PathExample {public static void main(String[] args) {Path path = Paths.get("c:\\data\\myfile.txt");} }

注意例子中兩個import語句,為了能夠適應(yīng)Path實例和Paths類,必須要引入它們。 其次,注意Paths.get(“c:\data\myfile.txt”)方法的調(diào)用,這個方法是創(chuàng)建一個Path實例。 換句話說,Paths.get() 方法是一個創(chuàng)建Path實例的工廠方法。

創(chuàng)建一個絕對路徑

以絕對路徑文件作為參數(shù)調(diào)用Paths.get()工廠方法后就是創(chuàng)建一個絕對Path實例,例子如下

Path path = Paths.get("c:\\data\\myfile.txt");

c:\data\myfile.txt就是絕對路徑,由于java中一個 \ 是轉(zhuǎn)義字符,所以要寫成兩個 \ ,\就是告訴java編譯器變成一個 \ 放到字符串中。

上面的是Windows操作系統(tǒng)中寫法,在Unix操作系統(tǒng)中(Linux, MacOS, FreeBSD 等等),上面路徑類似寫成:

Path path = Paths.get("/home/jakobjenkov/myfile.txt");

現(xiàn)在絕對路徑是 /home/jakobjenkov/myfile.txt

如果你在windows系統(tǒng)中使用 以 / 開頭的路徑,那么就會被理解為相對于當前驅(qū)動器,

/home/jakobjenkov/myfile.txt

會從C盤根目錄開始解析,最終的全路徑就是:

C:/home/jakobjenkov/myfile.txt

##創(chuàng)建一個相對路徑

相對路徑是指以一個路徑(基本路徑)指向 一個文件或者文件夾的路徑,它的絕對路徑會結(jié)合基本路徑推算 出來。

Java NIO Paths類也可以用來創(chuàng)建相對路徑的實例。你可以是使用Paths.get(basePath, relativePath)方法創(chuàng)建一個相對路徑的實例。

Path projects = Paths.get("d:\\data", "projects");Path file = Paths.get("d:\\data", "projects\\a-project\\myfile.txt");

第一行代碼是創(chuàng)建一個指向 d:\data\projects 文件夾路徑的 實例,第二行代碼是創(chuàng)建一個 指向d:\data\projects\a-project\myfile.txt文件路徑的實例。

當使用相對路徑使用,有兩個特別的符號可以被包含在路徑的字符串中,符號如下:

  • .
  • ..

“.” 代表當前目錄,如果你創(chuàng)建一個相對Path實例:

Path currentDir = Paths.get("."); System.out.println(currentDir.toAbsolutePath());

上面例子中Path實例的絕對路徑就是該代碼運行時的目錄的絕對路徑。

如果 . 在 路徑字符串的中間位置,就是指向同一個目錄(譯者注:就相當于不加 . 一樣),例子:

Path currentDir = Paths.get("d:\\data\\projects\.\a-project");

上面路徑就是和下面路徑一致

d:\data\projects\a-project

.. 代表父目錄或者是上一級目錄,示例:

Path parentDir = Paths.get("..");

上面例子中Path實例的絕對路徑就是該代碼運行時的父目錄的絕對路徑。

如果 .. 在路徑字符串的中間位置,相當于指向了上一級目錄,例子:

String path = "d:\\data\\projects\\a-project\\..\\another-project"; Path parentDir2 = Paths.get(path);

上面路徑和下面路徑一致

d:\data\projects\another-project

a-project后面的 .. 改變了目錄指向上一級父目錄 project ,然后再參照 父目錄project,指向下一級目錄another-project

. 和 .. 可以在Paths.get() 方法中結(jié)合使用,示例

Path path1 = Paths.get("d:\\data\\projects", ".\\a-project");Path path2 = Paths.get("d:\\data\\projects\\a-project","..\\another-project");

Path.normalize()方法

Path接口中的normalize()可以標準化一個路徑。標準化意思是解析路徑中的. 和 .. 。例子如下:

String originalPath ="d:\\data\\projects\\a-project\\..\\another-project";Path path1 = Paths.get(originalPath); System.out.println("path1 = " + path1);Path path2 = path1.normalize(); System.out.println("path2 = " + path2);

代碼開始使用.. 創(chuàng)建Path實例,使用路徑字符串創(chuàng)建實例后,并把Path實例打印出來(也就是調(diào)用Path.toString()方法)。

調(diào)用創(chuàng)建的Path實例后,返回一個新的Path實例,這個新的,標準的Path實例最后也打印出來。

上面代碼打印的內(nèi)容如下:

path1 = d:\data\projects\a-project\..\another-project path2 = d:\data\projects\another-project

我們可以看到規(guī)范化的路徑?jīng)]有包含a-project..多余的部分,移除的部分對于絕對路徑是無關(guān)緊要的。


總結(jié)

以上是生活随笔為你收集整理的Java NIO系列教程(十 五)Java NIO Path的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。