基本概念
- Path接口在java.nio.file包下
- 在Java中 ,Path表示文件系统的路径,可以指向文件或者文件夹,有绝对路径和相对路径之分
- java.nio.file.Path接口和操作系统的path环境变量没有任何关系
- 通常情况下 ,java.nio.file.Path和java.io.File很相似,可以用Path类来代替File类
Path的创建
- 要想使用java.nio.file.Path, 必须首先创建Path实例
- 可以使用Path类的静态方法Paths.get() 来产生一个实例:
Path path = Paths.get("e:\\data\\file.txt")
创建绝对路径Path
- 通过调用Paths.get()方法,传入绝对路径作为参数,就创建生成绝对路径Path :
Path path = Paths.get("e:\\data\\file.txt");
- Paths.get() 方法的参数为绝对路径e:\data\file.txt
- 有两个 \ \ 字符的原因:
- 第一个 \ 是转义字符. 表示紧跟着的字符需要被转义
- \ \ 表示需要向字符串中写入一个 \ 字符
- 上文中示例的path是windows下的绝对路径
- 在Unix系统中,比如Linux,MacOS,FreeBSD中,通过调用Paths.get()方法,传入绝对路径作为参数创建绝对路径Path :
Path path = Paths.get("/home/datas/file.txt");
- Paths.get() 方法的参数为绝对路径 /home/datas/file.txt
- 如果将以 / 开头path的格式运行在windows系统中,系统会解析为相对路径
创建相对路径Path
- 相对路径: 指从一个已确定的路径开始到某一文件或者文件夹的路径
- 相对路径对应的决定路径: 将已确定的路径和相对路径拼接起来
- Java NIO Path类也可以使用相对路径,可以通过Paths.get(basePath, relativePath) 创建一个相对路径Path :
Path projects = Paths.get("e:\\data", "projects");
Path file = Paths.get("e:\\data", "projects\\myfile.txt");
Path类的方法
normalize
- Path.normalize() 方法标准化路径
- 标准化的含义: 路径中的 . 和 . . 都被去掉,指向真正的路径目录地址
- 示例:
String originalPath = "e:\\data\\projects\\..\\myfile.txt";
Path path = Paths.get(originalPath );
System.out.println("path = " + path);
Path normalPath = path.normalize();
System.out.println("normalPath = " + normalPath);
path = e:\data\projects\..\myfile.txt
normalPath = e:\data\myfile.txt