跳到主要内容

path

2024年10月14日
柏拉文
越努力,越幸运

一、path


1.1 认识

二、path.basename(path[, suffix])


path.basename() 方法返回path的最后一部分,类似于Unix basename命令。

语法

const result = path.basename(path(必填),ext(可选));
  • path: 路径
  • ext: 可选的文件扩展名

返回值

返回path的最后一部分的字符串

场景:

  • 获取最后一级目录

    const Path = require('path');

    console.log(__dirname); // /Users/zhangwenqiang/Desktop/practice/Node/node-api
    const result = Path.basename(__dirname);
    console.log(result); // node-api
  • 获取文件名,带后缀

    const Path = require('path');

    const result = Path.basename("/Users/zhangwenqiang/Desktop/practice/Node/node-api/path.js");
    console.log(result); // path.js
  • 获取文件名,不带后缀

    const Path = require('path');

    const result = Path.basename("/Users/zhangwenqiang/Desktop/practice/Node/node-api/path.js",".js");
    console.log(result); // path

三、path.delimiter


path.delimiter 提供特定于平台的路径定界符

语法

const Path = require('path');

const result = Path.delimiter;
console.log(result);

返回值

返回特定于平台的路径定界符字符串

场景

  • 返回特定于平台的路径定界符

    const Path = require('path');

    const result = Path.delimiter;
    console.log(result);

四、path.dirname(path)


path.dirname(path) 方法返回 path 的目录名,类似于 Unix dirname 命令。

语法

const result = Path.dirname(path<string>);

返回值

场景

  • 获取目录的上级目录

    const Path = require('path');

    console.log(__dirname); // /Users/zhangwenqiang/Desktop/practice/Node/node-api
    const result = Path.dirname(__dirname);
    console.log(result); // /Users/zhangwenqiang/Desktop/practice/Node
  • 获取文件所在目录

    const Path = require('path');
    const result = Path.dirname("/Users/zhangwenqiang/Desktop/practice/Node/node-api/path.js");
    console.log(result); // /Users/zhangwenqiang/Desktop/practice/Node/node-api

五、path.extname(path)


path.extname(path) 方法返回 path扩展名,即 path 的最后一部分中从最后一次出现的 .(句点)字符到字符串的结尾。 如果 path 的最后一部分中没有 .,或者除了 path 的基本名称(参见 path.basename())的第一个字符之外没有 . 个字符,则返回空字符串。

语法

const result = path.extname(path<string>);

返回值

场景

  • 获取一段路径的后缀名-没有 . 字符: 返回空字符串

    const Path = require('path');

    const result = Path.extname("/Users/zhangwenqiang/Desktop/practice/Node/node-api/path");
    console.log(result); // 空字符串
  • 获取一段路径的后缀名-只有 . 字符: 返回 . 字符串

    const Path = require('path');

    const result = Path.extname("/Users/zhangwenqiang/Desktop/practice/Node/node-api/path.");
    console.log(result); // .
    • 获取一段路径的后缀名-有完整的 .后缀名: 返回完整的后缀名

      const Path = require('path');

      const result = Path.extname("/Users/zhangwenqiang/Desktop/practice/Node/node-api/path.js");
      console.log(result); // .js

六、path.format(pathObject)


path.format(pathObject) 方法从对象返回路径字符串。 这与 path.parse() 相反。

语法

const result = path.format({
dir:string,
root:string,
base:string,
name:string,
ext:string,
})
  • dir: 目录: 如果有 dir 目录,会忽略 root 根目录
  • root: 根目录: 如果有 dir 目录,那么会忽略 root 根目录
  • base: 带后缀的文件名: 如果有 base 带后缀的文件名,那么会忽略 name 和 ext
  • name: 不带后缀的文件名
  • ext: 后缀

返回值

场景

  • 根据目录和文件名拼接路径

    const Path = require('path');

    const result = Path.format({
    dir:'/node',
    base:'api.js'
    });
    console.log(result);

七、path.matchesGlob(path, pattern)


八、path.isAbsolute(path)


path.isAbsolute(path) 方法确定path是否为绝对路径。

语法

const result = path.isAbsolute(path:string);

返回值

布尔值

场景

  • 判断路径是否为绝对路径

    const Path = require('path');

    const result1 = Path.isAbsolute("/practice/Node/node-api");
    console.log(result1) // true

    const result2 = Path.isAbsolute("./practice/Node/node-api");
    console.log(result2); // false

九、path.join([...paths])


path.join([...paths]) 方法使用特定于平台的分隔符作为定界符将所有给定的path片段连接在一起,然后规范化生成的路径。

语法

const result = path.join(path1:string,path2:string,path3:string,……);

场景

  • 拼接路径-不带/

    const Path = require('path');

    const result = Path.join("a","b","c","d");
    console.log(result); // a/b/c/d
  • 拼接路径-带/

    const Path = require('path');

    const result = Path.join("/a","/b","/c","/d");
    console.log(result); // /a/b/c/d
  • 拼接路径-带/和不带/

    const Path = require('path');

    const result = Path.join("/a","/b","c","d");
    console.log(result); // /a/b/c/d
  • 凭借路径-带..返回上一级

    const Path = require('path');

    const result = Path.join("/a","/b","/c","/d","..");
    console.log(result); // /a/b/c

十、path.normalize(path)


path.normalize(path) 方法规范化给定的path,解析 ... 片段。

语法

const result = path.normalize(path:string);

场景

  • 获取规范化的路径

    const Path = require('path');

    const result = Path.normalize("/a/b/c/d/..");
    console.log(result); // /a/b/c

十一、path.parse(path)


path.parse(path) 方法返回一个对象,其属性表示path的重要元素。

语法

const result = path.parse(path:string);

返回值

result = {
dir: string
root: string
base: string
name: string
ext: string
}

场景

  • 获取路径字符串各个部分: 目录、文件名

    const Path = require('path');

    const result = Path.parse("/a/b/c/d.js");
    console.log(result); // { root: '/', dir: '/a/b/c', base: 'd.js', ext: '.js', name: 'd' }

十二、path.posix


path.posix 属性提供对 path 方法的 POSIX 特定实现的访问。换句话来说,通过path.posix 可以根据不同系统做相关兼容处理,力保输出的结果在不同平台下是一致的。对于path.posix的理解:

  • windows 系统: windows 系统分不同的磁盘,然后磁盘下面都是树状结构的文件和文件夹。windows 使用\来分割目录或者文件,如D:\node\api.js
  • Unix 系统或者 Mac 系统: 系统不分盘符,只有一个根目录/。系统通过/来分割目录和文件,如/user/node/api.js

通过path.posix.Path API 保证在windows下或者Unix或者Mac下的系统输出一致,都为/

语法

const result1 = path.posix.join([...paths:string]);
const result2 = path.posix.resolve([...paths:string]);
……path.posix.Path API

返回值

场景

  • 兼容不同系统的path.join()结果

    // windows 系统下的结果:
    const result = Path.join("a","b","c");
    console.log(result); // a\b\c

    // Mac 系统下的结果:
    const result = Path.join("a","b","c");
    console.log(result); // a/b/c

    // 兼容下的结果:
    const result = Path.posix.join("a","b","c");
    console.log(result); // a/b/c
  • 兼容不同系统的path.resolve()结果

    // windows 系统下的结果:
    const result = Path.resolve("a","b","c");
    console.log(result); // D:\practice\Node\a\b\c

    // Mac 系统下的结果:

    const result = Path.resolve("a","b","c");
    console.log(result); // /Users/zhangwenqiang/Desktop/practice/Node/node-api/a/b/c

    // 兼容下的结果:
    const result2s = Path.posix.resolve("a","b","c");
    console.log(result2s); // /practice/Node/node-api/a/b/c

十三、path.relative(from, to)


path.relative(from,to) 方法根据当前工作目录返回从 from 到 to 的相对路径。 如果 from 和 to 都解析为相同的路径(在分别调用 path.resolve() 之后),则返回零长度字符串。

语法

const result = path.relative(from:string,to:string);

返回值

场景

  • 获取两个路径之间的相对路径

    const Path = require('path');

    const result = Path.relative('/a/b/c/d','/a/b/e/f');
    console.log(result); // ../../e/f

十四、path.resolve([...paths])


path.resolve([...paths]) 方法将路径或路径片段的序列解析为绝对路径。给定的路径序列从右到左处理,每个后续的path会被追加到前面,直到构建绝对路径

语法

const result = path.resolve(path1:string,path2:string,path3:string);

返回值

场景

  • 获取绝对路径-path1 本身为绝对路径: 解析到 path1 为止构建成绝对路径

    const Path = require('path');

    const result = Path.resolve('/a','b','c');
    console.log(result); // /a/b/c
  • 获取绝对路径-path1 不是绝对路径: 解析到 path1 后,拼接当前工作目录构建成绝对路径

    const Path = require('path');

    const result = Path.resolve('a','b','c');
    console.log(result); // /Users/zhangwenqiang/Desktop/practice/Node/node-api/a/b/c

十五、path.sep


path.sep 提供特定于平台的路径片段分隔符

语法

const result = path.sep;

场景

  • 获取特定平台的路径片段分隔符

    const Path = require('path');

    const result = Path.sep;
    console.log(result); // /

十六、path.toNamespacedPath(path)


十七、path.win32


参考资料


Node.js 中文网