Java中的NIO详解Day13-Java NIO Path

基本概念

  • Path接口在java.nio.file包下
  • Java,Path表示文件系统的路径,可以指向文件或者文件夹,有绝对路径和相对路径之分
  • java.nio.file.Path接口和操作系统的path环境变量没有任何关系
  • 通常情况下 ,java.nio.file.Pathjava.io.File很相似,可以用Path类来代替File

Path的创建

  • 要想使用java.nio.file.Path, 必须首先创建Path实例
  • 可以使用Path类的静态方法Paths.get() 来产生一个实例:
Path path = Paths.get("e:\\data\\file.txt")
  • Paths.get() 是一个工厂方法

创建绝对路径Path

  • 通过调用Paths.get()方法,传入绝对路径作为参数,就创建生成绝对路径Path :
Path path = Paths.get("e:\\data\\file.txt");
  • Paths.get() 方法的参数为绝对路径e:\data\file.txt
    • 有两个 \ \ 字符的原因:
      • 第一个 \ 是转义字符. 表示紧跟着的字符需要被转义
      • \ \ 表示需要向字符串中写入一个 \ 字符
  • 上文中示例的pathwindows下的绝对路径
  • 在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 :
// 创建一个指向d:\data\projects文件夹的实例
Path projects = Paths.get("e:\\data", "projects");

// 创建一个指向d:\data\projects\myfile.txt文件的实例
Path file = Paths.get("e:\\data", "projects\\myfile.txt");
  • 使用相对路径时,可以使用两种符号:
    • . - 表示当前路径
      // 创建的Path实例对应的路径就是运行这段代码的项目工程路径
      Path currentDir = Paths.get(".");
      
      • 如果 . 在路径中使用,表示的就是当前路径:
        Path currentDir = Paths.get("e:\\data\\projects\.\myfile.txt");
        
        对应的就是:
        e:\data\projects\myfile.txt
        
    • . . - 表示父类目录
      // 创建的Path实例对应的路径是当前运行这段代码目录的上级目录
      Path parentDir = Paths.get("..");
      
      • 如果 . . 在路径中使用,表示的是上级目录:
          Path parentDir = Paths.get("e:\\data\\projects\\..\\myfile.txt");
        
        对应的就是:
        e:\data\myfile.txt
        
        • projects目录后的. .符号,将指向的目录修改为projects的父目录data目录
    • . 和 . . 都可以在Paths.get() 的双形参方法,即创建相对路径Path的方法中使用

Path类的方法

normalize

  • Path.normalize() 方法标准化路径
  • 标准化的含义: 路径中的 . 和 . . 都被去掉,指向真正的路径目录地址
  • 示例:
String originalPath = "e:\\data\\projects\\..\\myfile.txt";

/*
 * 创建一个包含 .. 字符的路径地址,输出此路径
 */
Path path = Paths.get(originalPath );
System.out.println("path = " + path);

/*
 * 调用normalize()方法,返回一个新的Path对象,输出新对象的路径
 */
Path normalPath = path.normalize();
System.out.println("normalPath = " + normalPath);
path = e:\data\projects\..\myfile.txt
normalPath = e:\data\myfile.txt

猜你喜欢

转载自blog.csdn.net/JewaveOxford/article/details/107910742
NIO