1、类的介绍
Path接口 是JDK1.7中定义的接口,主要用来在文件系统中定位文件,通常表示系统相关的文件路径。JDK中的介绍:An object that may be used to locate a file in a file system. It will typically represent a system dependent file path.
Paths类 是JDK1.7中定义的静态工具类,用来根据String格式的路径或者URI返回Path的实例。JDK中的介绍:This class consists exclusively of static methods that return a {@link Path} by converting a path string or {@link URI}.
2、Path实例的获取
Path是接口,实例不能通过new关键字直接去构建;而Path的实现类,官方并不想暴露出来给用户使用,所以我们应该通过其他途径去获取Path的实例。
这里,我总结了4个方向去获取Path的实例:
1)根据字符串格式的路径获取:使用Paths工具类中的get方法去获取,方法的参数是1个或1个以上的String,Paths会自动根据参数中的字符串对路径做拼接。另外,两个点".."表示的是路径向上回退一级。
2)根据URI获取:使用Paths的get(URI url)方法获取。
3)根据File的实例进行转换:File中定义了实例方法toPath(),可以将File实例转换为Path的实例。
4)从对其他Path实例的操作中获取:这个相关的方法就有很多了,例如Path自己的getParent()、normalize()等,或者Files中的诸多create、copy、walk等等多个系列的很多方法。这里就不一一列举了
3、文件路径管理(Path的主要方法)
根据前面可以知道,Path接口主要是用来管理文件路径的,所以文件路径管理涉及的主要也是Path中的方法。当然,这些基本上也涵盖了Path中的绝大多数方法。
Part 1:
1)path.getFileName():获取文件、目录或者其他类型文件(下文统统用文件指代这几种情况的任一)的名称,返回值类型是Path。例如对于/users/nanxs/test构造的Path实例,返回的就是test对应的Path实例。
2)path.getParent():获取文件的父路径的Path实例,例如对于/users/nanxs/test构造的Path实例,返回的就是/users/nanxs对应的Path实例。
3)path.getName(int index)和path.getNameCount():分层拆分路径,例如对于/users/nanxs/test,getNameCount()返回的就是3,而对于path.getName(int index),当index分别为0~2时,得到的结果分别是users、nanxs和test。
4)path.getRoot():获取根路径,例如对于Linux/Mac OS,根路径一般就是"/"。
5)path.getFileSystem():获取文件系统。对FileSystem不熟悉的读者请参考
Path path = Paths.get(System.getProperty(“user.dir”), “data/test.txt”);
// 1. get name of the file or direction
System.out.println("file name: " + path.getFileName());
Files.createDirectories(Path path) 是Java中用于创建多级目录的方法,它位于java.nio.file.Files类中。这个方法可以用来创建指定路径的目录,包括任何不存在的父目录。
Files.write(fileNamePath, file, StandardOpenOption.CREATE);