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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

了解java.nio.file.Path – 1

發布時間:2023/12/3 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 了解java.nio.file.Path – 1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

介紹

Java的最后幾個發行版本,即Java 7,Java 8和即將到來的Java 9,具有許多功能,這些功能使Java開發人員的生活更加輕松。 (我知道Java 9會使它變得更困難,但是只有在您采用新的范例時才可以。之后,它將變得更好)。

功能或API之一是Java 7中引入的File API的增強。該功能集的新類之一是java.nio.file.Path及其工廠java.nio.file.Paths 。

Maven依賴

我們將使用JUnit和AssertJ編寫測試以演示API。

<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version> </dependency> <dependency><groupId>org.assertj</groupId><artifactId>assertj-core</artifactId><!-- use 2.8.0 for Java 7 projects --><version>3.8.0</version><scope>test</scope> </dependency>

創建

正如我之前java.nio.file.Paths提到的是java.nio.file.Path創建者就是它提供了兩個工廠方法:

  • 靜態路徑get(字符串優先,字符串…更多)
  • 靜態路徑get(URI uri )

可以用來獲取java.nio.file.Path的實例。 讓我們看一下獲取實例的兩種方法:

@Test public void testPathCreation(){Path path = Paths.get("src", "main", "resources");assertThat(path.isAbsolute()).isFalse();assertThat(path.toString()).isEqualTo("src\\main\\resources");Path uriPath = Paths.get(URI.create("file:///Users/Mohamed/git"));assertThat(uriPath.isAbsolute()).isFalse();assertThat(uriPath.toAbsolutePath().toString()).isEqualTo("C:\\Users\\Mohamed\\git"); }

探索API

使用

此方法用于檢查給定的Path對象是否以另一個Path對象或表示為String對象的路徑結尾。

@Test public void testEndsWith(){Path path = Paths.get("src", "main", "resources");assertThat(path.endsWith(Paths.get("main","resources"))).isTrue();assertThat(path.endsWith("resources")).isTrue(); }

使用

此方法返回出現在路徑終端或路徑末尾的目錄或文件的名稱。

@Test public void testGetFileName(){Path path = Paths.get("src", "main", "resources");assertThat(path.getFileName().toString()).isEqualTo("resources");path = Paths.get("src", "test", "java", "info", "sanaulla","PathDemoTest.java");assertThat(path.getFileName().toString()).isEqualTo("PathDemoTest.java"); }

使用

此方法返回java.nio.file.FileSystem的實例,該實例表示基礎文件系統。 我們將在以后的文章中詳細討論。

@Test public void testGetFileSystem(){Path path = Paths.get("src", "main", "resources");assertThat(path.getFileSystem()).isNotNull();assertThat(path.getFileSystem().getSeparator()).isEqualTo("\\");path.getFileSystem().getRootDirectories().forEach(System.out::println); }

使用

getNameCount()返回在文件分隔符分隔每個名稱成分的路徑中存在的名稱成分的數量。 方法getName()獲取索引,并在索引處返回名稱組件。

例如,給定路徑:/var/log/myapp/spring.log具有4個名稱組件,并且組件位置基于0。 因此,索引1的名稱部分是log。

@Test public void testGetName(){Path path = Paths.get("src", "main", "resources");assertThat(path.getName(0)).isEqualTo(Paths.get("src"));assertThat(path.getName(path.getNameCount() - 1)).isEqualTo(Paths.get("resources")); }

使用

該API從路徑的根目錄返回到終端目錄或文件(即排除該路徑)為止的路徑。 例如:在代表/var/log/myapp/spring.path的Path實例上調用getParent()返回代表/ var / log / myapp的Path實例

如果給定路徑沒有父路徑或它是根目錄,則返回null。

@Test public void testGetParent(){Path path = Paths.get("src", "main", "resources");assertThat(path.getParent()).isEqualTo(Paths.get("src", "main"));assertThat(Paths.get("/").getParent()).isNull(); }

使用getRoot

此API返回如果它存在的根或空的路徑的給定實例的路徑實例。

@Test public void testGetRoot(){Path path = Paths.get("src", "main", "resources");assertThat(path.getRoot()).isNull();path = Paths.get("/users", "Mohamed", "git", "blogsamples");assertThat(path.getRoot()).isEqualTo(Paths.get("/")); }

使用

這個API有點棘手。 它將刪除路徑中的多余元素。 冗余元素是那些元素的刪除最終將導致相似的Path的元素。 例如:如果我們有路徑src \ .. \ src \ main \ java等效于src \ main \ java 。 normalize() API有助于從前者實現后者。

@Test public void testNormalize(){Path path = Paths.get("src","..", "src", "main", "resources", ".");assertThat(path.toString()).isEqualTo("src\\..\\src\\main\\resources\\.");assertThat(path.normalize().toString()).isEqualTo("src\\main\\resources"); }

使用

此方法返回由下限和上限標識的子路徑,這些子路徑作為參數傳遞給該方法。 計算子路徑時排除上限。

@Test public void testSubpath(){Path path = Paths.get("Mohamed", "git", "blogsamples", "src", "main", "resources");assertThat(path.subpath(2, 3).toString()).isEqualTo("blogsamples");assertThat(path.subpath(0, path.getNameCount()).toString()).isEqualTo("Mohamed\\git\\blogsamples\\src\\main\\resources"); }

使用

此方法返回給定路徑的絕對路徑。 絕對路徑源自文件系統的根。

@Test public void testToAbsolutePath(){Path path = Paths.get("src", "main", "resources");assertThat(path.toAbsolutePath().toString()).isEqualTo("C:\\Users\\Mohamed\\git\\blogsamples\\src\\main\\resources"); }

使用

這是創建java.io.File實例的非常方便的方法 。 我們可以利用創建具有多個文件夾級別的Path對象的用途,然后使用toFile()獲取File的實例。

@Test public void testToFile(){Path path = Paths.get("src", "main", "resources");File file = path.toFile();assertThat(file).isNotNull();assertThat(file.isDirectory()).isTrue();assertThat(file.exists()).isTrue(); }

使用

此方法可用于將符號鏈接解析為其實際位置。 要測試此API,我們創建一個符號鏈接:

在Windows上,您可以使用:

mklink /D "C:\blogsample" "C:\Users\Mohamed\git\blogsamples"

在Linux上,您將使用

ln -s /var/log/sample.log sample

該方法采用LinkOption類型的選項。 截至目前,該枚舉具有一個元素,即NOFOLLOW_LINKS 。 如果通過此選項,則符號鏈接不會解析為其實際路徑。

@Test public void testToRealPath() throws IOException {Path path = Paths.get( "/blogsample");assertThat(path.toRealPath().toString()).isEqualTo("C:\\Users\\Mohamed\\git\\blogsamples");assertThat(path.toRealPath(LinkOption.NOFOLLOW_LINKS).toString()).isEqualTo("C:\\blogsample"); }

使用

此方法返回給定路徑的URI表示形式。 通常,在Windows上,您會看到以下形式的文件:file:/// C:/ 。 但這取決于系統

@Test public void testToUri(){Path path = Paths.get("src", "main", "resources");assertThat(path.toUri()).isEqualTo(URI.create("file:///C:/Users/Mohamed/git/blogsamples/src/main/resources/")); }

注意 :需要注意的是,大多數API的返回類型都是java.nio.file.Path的實例。 這有助于我們鏈接多個方法并在單個java.nio.file.Path實例上調用它們。

在下一篇文章中,我們將研究java.nio.file.Path中其余的API。

翻譯自: https://www.javacodegeeks.com/2017/08/getting-know-java-nio-file-path-1.html

總結

以上是生活随笔為你收集整理的了解java.nio.file.Path – 1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。