Path和Paths
Path
是JDK1.7中定义的接口, Path
代表了一个路径,这个路径可以是一个文件夹,也可以是一个文件。以下是openJDK1.8中的 Path
相关类图结构Paths
是一个用于创建Path **的工厂类**,它里面有两个重载的 get
方法用来创建 Path
类。
Path
的实现类,无法通过new 来创建,我们可以通过以下的几种方式创建 Path
对象
- 使用
Paths
类中的get
方法来创建Path
。 - 通过
File
对象的toPath
方法创建Path
- 通过调用
Path
实例的方法创建新的Path
实例,比如getParent
,getRoot
Path
类中定义了很多获取路径相关信息的方法,以下列举几个常用的方法
String userDir = System.getProperty("user.dir"); //C:\Users\PC\IdeaProjects\dbtest
Path path = Paths.get(userDir); //创建一个Path对象
System.out.println(path); //C:\Users\PC\IdeaProjects\dbtest
//获取根路径
System.out.println(path.getRoot()); //这里输出是C:/。 如果是Linux或MacOS系统,根路径就是/
//获取上级路径
System.out.println(path.getParent()); //C:\Users\PC\IdeaProjects
//获取离根目录最远的路径名称
System.out.println(path.getFileName()); //dbtest
//返回路径中名称元素的数量。根路径除外
int count = path.getNameCount(); // 4
for (int i = 0; i < count; i++) {
//返回这个索引对应的路径元素
System.out.println(path.getName(i)); //Users。 PC。 IdeaProjects。 dbtest
}
//========以上方法都是返回新的Path对象
Path还有一些其他方法,这里也就不再介绍了,大家可以自行再去摸索。
Path
本身并不包含任何操作文件的方法,如果要操作文件或目录,就需要与 Files
类一起使用。
Files
Files
类可以理解为是一个工具类,它里面包含了很多对文件操作的静态方法,这些方法都需要传入Path对象。
下面列举几个Files的常用方法。
//判断Path是文件还是文件夹
System.out.println(Files.isDirectory(path));
//判断是否路径存在
System.out.println(Files.exists(path));
//获取子目录
Stream<Path> list = Files.list(path);
list.forEach(System.out::println);
Files.delete(path);