0
点赞
收藏
分享

微信扫一扫

Java中的NIO详解Day13-Java NIO Path

半秋L 2022-02-14 阅读 51



Java NIO Path


  • ​​基本概念​​
  • ​​Path的创建​​

  • ​​创建绝对路径Path​​
  • ​​创建相对路径Path​​

  • ​​Path类的方法​​
  • ​​normalize​​


基本概念


  • 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



举报

相关推荐

0 条评论