Java NIO Path介面操作檔案

java說發表於2020-11-27

1、前言

Path介面位於java.nio.file包中,所以Path介面的完全限定名稱為java.nio.file.Path。Java Path例項表示檔案系統中的路徑。一個路徑可以指向一個檔案或一個目錄。路徑可以是絕對路徑,也可以是相對路徑。在許多方面,java.nio.file.Path介面類似於java.io.File類,但是有一些細微的差別。不過,在許多情況下,您可以使用Path介面來替換File類的使用。

2、Path 的使用

2.1 建立一個Path例項

可以使用Paths類(java.nio.file.Paths)中的靜態方法來建立路徑例項,名為Paths.get()。

public class PathExample {
    public static void main(String[] args) {
        Path path = Paths.get("D:\\data\\test\\log");
    }
}
2.2 API的使用
  1. static Path get(String first, String… more)

將給定的字串拼接成路徑

 Path absolutePath = Paths.get("G:\\","data","\\test","\\log");
        Path relativepath = Paths.get("test","\\log");
        System.out.println("絕對路徑是:"+absolutePath);
        System.out.println("相對路徑是:"+relativepath);

控制檯輸出

絕對路徑是:G:\data\test\log
相對路徑是:test\log
  1. Path resolve(Path other) 或 Path resolve(String other)

根據指定路徑解析路徑 若 other 是絕對路徑,那麼就返回 other ;否則,返回通過連線 this 和 other 獲得的路徑。

Path path1 = Paths.get("D:\\data\\test\\log");

 System.out.println(path1.resolve("/log")); //D:\log

 System.out.println(path1.resolve("./log"));   //D:\data\test\log\.\log

 System.out.println(path1.resolve("../log"));   //D:\data\test\log\..\log
  1. Path resolveSibling(Path other) 或 Path resolveSibling(String other)

若 other 是絕對路徑, 那麼就返回 other ;否則,返回通過連線 this 的父路徑和 other 獲得的路徑

 		Path path1 = Paths.get("D:\\data\\test\\log");

        System.out.println(path1.resolveSibling("/log")); //D:\log
       
        System.out.println(path1.resolveSibling("./log"));  //D:\data\test\.\log
       
        System.out.println(path1.resolveSibling("../log"));  //D:\data\test\..\log
  1. toAbsolutePath()

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


        System.out.println(Paths.get("log","test").toAbsolutePath());  //G:\IDEAplace\multithreading\log\test
  1. relativize(Path other)

構造此路徑和給定路徑之間的相對路徑。

Path path2 = Paths.get("D:\\data\\test\\logs\\java.log");
        
System.out.println(path1.relativize(path2)); //  ..\logs\java.log
  1. subpath(int beginIndex, int endIndex)

擷取路徑,包括第一個索引,不包括第二個索引

Path path = Paths.get("D:\\data\\test\\log");
System.out.println(path.subpath(0, 2));  //   data\test

其他的請自行參考Api 幫助文件

相關文章