十五、Java NIO Path

所有文章

https://www.cnblogs.com/lay2017/p/12901123.html

 

正文

Path是从Java 7开始加入NIO软件包的。它可以表示一个文件,也可以表示一个路径。可以是绝对路径,也可以是相对路径。

你可能会觉得Path和常见的File很相似,大多数场景下File和Path可以相互替换,但是还是存在一些细微的不同点。以下是关于Path的一些用法

创建Path

public class PathExample {

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

Path的创建通过Paths的get方法

创建绝对路径

windows系统下

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

unix系统下

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

如果是windows系统下使用了

/home/jakobjenkov/myfile.txt

会被解释为

C:/home/jakobjenkov/myfile.txt

创建相对路径

创建相对路径使用

Paths.get(basePath, relativePath)

示例代码

Path projects = Paths.get("d:\\data", "projects");

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

projects是:d:\\data\\projects

file是:d:\\data\\projects\\a-project\\myfile.txt

相对路径还有两个操作符辅助

. :表示当前目录

.. :表示上级目录

路径中存在 . 符号,表示当前目录

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

路径

d:\data\projects\a-project

如果是 .. 符号,表示上级目录

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

路径

d:\data\projects\another-project

同样的还可以这样写

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

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

Path.normalize()方法

以下是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);

打印结果

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

可以看到,normalize不包含如:.. 这样的符号

 

posted @ 2020-05-19 14:57  __lay  阅读(259)  评论(0编辑  收藏  举报