[Node.js] path 模块

Node.js path模块

path 模块提供了用于处理文件和目录的路径的实用工具 。
在 Windows 操作系统上运行时,path 模块将假定正在使用Windows 样式的路径 。

(以下整理了部分属性和方法可供参考 , 若有错误请评论区指出 , 会及时更改。 )


首先在空白 js 文件中输入以下代码引入 pash 模块 :

const path = require("path") ; 

方法 :

path.extname(path)

参数 path : String 字符串

如果 path 不是字符串,则抛出 TypeError 。

返回结果 : String 字符串

返回 path 的扩展名,即 path 的最后一部分中从最后一次出现的 “.”(句点)字符到字符串的结尾 。

如果 path 的最后一部分中没有 " . ",或者除了 path 的基本名称的第一个字符之外没有 " . " 这个字符,则返回空字符串 。

实例 :

console.log(path.extname("index.html"));

console.log(path.extname("index.coffee.md"));

console.log(path.extname("index.js"));

返回结果 :

.html
.md
.js

path.join([…paths])

参数 …paths : String 路径片段的序列

返回结果 : String 字符串

如果任何路径片段不是字符串 ,则抛出 TypeError 。

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

零长度的 path 片段被忽略 。

如果连接的路径字符串是零长度字符串 ,则将返回 ’ . ’ ,表示当前工作目录 。

Windows系统 : " \ " 。

实例 :

console.log(path.join("a", "b", "c"));

console.log(path.join("a", "b", "c", "index.css"));

console.log(path.join("a", "b", "../c", "index.html"));

返回结果 :

a\b\c
a\b\c\index.css
a\c\index.html

path.normalize(path)

参数 path : String字符串

如果 path 不是字符串,则抛出 TypeError 。

返回结果 : String字符串

规范化给定的 path,解析 ’ … ’ 和 ’ . ’ 片段

实例 :

console.log(path.normalize('C:\\temp\\\\foo\\bar\\..\\'));

console.log(path.normalize('C:temp\\\\/\\/\\/foo/bar'));

返回结果 :

C:\temp\foo\

C:\temp\foo\bar

path.resolve([…paths])

参数 …paths : String 路径或路径片段的序列

返回结果 : String 字符串

如果任何参数不是字符串 ,则抛出 TypeError 。

将路径或路径片段的序列解析为绝对路径

给定的路径序列从右到左处理,每个后续的 path会被追加到前面,直到构建绝对路径

如果在处理完所有给定的 path 片段之后,还没有生成绝对路径,则使用当前工作目录 。

生成的路径被规范化,并删除尾部斜杠(除非路径解析为根目录)。

零长度的 path 片段被忽略 。

如果没有传入 path 片段,则 path.resolve() 将返回当前工作目录的绝对路径 。

实例 :

console.log(path.resolve("./foo/bar", "./baz"));

console.log(path.resolve("/foo/bar", "tmp/file"));

console.log(path.resolve("wwwroot", "static_files/png", "../gif/image.gif"));

返回结果 :

D:\文件夹\foo\bar\baz
D:\foo\bar\tmp\file
D:\文件夹\wwwroot\static_files\gif\image.gif

path.isAbsolute(path)

参数 path :String 字符串

如果 path 不是字符串,则抛出 TypeError 。

返回结果 : Boolean 布尔类型

判断参数 path 是否为绝对路径

如果给定的 path 是零长度字符串,则将返回 false 。

如果是以 “ / ” 开头的路径,返回true 。

实例 :

(含有自己测试的没有多大意义的部分)

console.log(path.isAbsolute('text/temp123'));

console.log(path.isAbsolute('./temp123'));

console.log(path.isAbsolute('../temp123'));

console.log(path.isAbsolute("foo/index.html"));

console.log(path.isAbsolute('C:/foo/..'));

console.log(path.isAbsolute('C:\\foo\\..'));

console.log(path.isAbsolute('bar\\baz'));

console.log(path.isAbsolute('bar/baz'));

console.log(path.isAbsolute('/temp123'));

console.log(path.isAbsolute('//temp123'));

console.log(path.isAbsolute('///temp123'));

console.log(path.isAbsolute('\temp123'));

console.log(path.isAbsolute('\\temp123'));

console.log(path.isAbsolute('\\\temp123'));

console.log(path.isAbsolute('.'));

返回结果 :

false
false
false
false
true
true
false
false
true
true
true
false
true
true
false

path.relative(from,to)

参数 from : string 字符串

参数 to : string 字符串

返回结果 : string 字符串

如果 from或 to 不是字符串,则抛出 TypeError 。

根据当前工作目录返回从 from 到 to 的相对路径

如果 from 和 to都解析为相同的路径(在分别调用 path.resolve() 之后),则返回零长度字符串 。

实例 :

console.log(path.relative("C:\\text", "C:\\user\\img"));

console.log(path.relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb'));

返回结果 :

..\user\img
..\..\impl\bbb

path.dirname(path)

参数 path : 字符串

如果 path 不是字符串,则抛出 TypeError 。

返回结果 : 字符串

返回 path的目录名 , 即返回路径中代表文件夹的部分

尾随的目录分隔符被忽略。

实例 :

console.log(path.dirname("text / index.html"));

返回结果 :

text

path.basename(path[ext])

参数path : String 字符串

参数ext : String 字符串

如果 path 不是字符串,或者如果给定 ext 并且不是字符串,则抛出 TypeError 。

返回结果 : String 字符串

返回路径中的最后一部分

尾随的目录分隔符被忽略 。

实例 :

console.log(path.basename("text/index.html"));

console.log(path.basename("/text/index.html", "html"));

返回结果 :

index.html
index.

Windows 通常以不区分大小写的方式处理文件名(包括文件扩展名),但此函数不会 。
例如,C:\foo.html 和 C:\foo.HTML 指的是同一个文件,但 basename 将扩展名视为区分大小写的字符串:
实例 :

console.log(path.basename('C:\\text\\foo.html', '.html'));

console.log(path.basename('C:\\text\\foo.HTML', '.html'));

返回结果 :

foo
foo.HTML

path.format(pathObject)

参数 pathObject : Object 任何具有以下属性的 JavaScript对象 :

dir String 字符串
root String 字符串
base String 字符串
name String 字符串
ext String 字符串

返回结果 : String字符串

从对象中返回路径字符串 , 和 path.parse 相反 。

当向 pathObject 提供属性时,请记住存在一个属性优先于另一个属性的组合:
如果提供 pathObject.dir,则忽略 pathObject.root 。
如果 pathObject.base 存在,则忽略 pathObject.ext 和 pathObject.name 。

实例 :

console.log(path.format({
    dir: "C:\\path\\dir",
    base: "file.tet"
}));

返回结果 :

C:\path\dir\file.tet

path.parse(path)

参数 path : String 字符串
如果 path 不是字符串,则抛出 TypeError 。
返回一个对象,其属性表示path 的重要元素
尾随的目录分隔符被忽略 。
返回的对象将具有以下属性:

dir : String 字符串
root : String 字符串
base : String 字符串
name : String 字符串
ext : String 字符串

实例 :

console.log(path.parse('C:\\path\\dir\\file.txt'));

返回结果 :

{
  root: 'C:\\',
  dir: 'C:\\path\\dir',
  base: 'file.txt',
  ext: '.txt',
  name: 'file'
}

path.toNamespacedPath(path)

参数 path : String 字符串
返回结果 : String 字符串
此方法仅在 Windows 系统上有意义
返回给定path 的等效命名空间前缀路径 , 如果 path 不是字符串,则 path 将不加修改地返回。

实例 :

 console.log(path.toNamespacedPath("text / index.js"));

返回结果 :

\\?\D:\文件夹\text \ index.js

属性 :

path.sep

平台的文件路径分隔符 。 “\“或””/" String 字符串
在 Windows 上 ,正斜杠 ( / ) 和反斜杠 ( \ ) 都被接受作为路径片段分隔符。

例 :

console.log('foo\\bar\\baz'.split(path.sep));

返回结果 :

[ 'foo', 'bar', 'baz' ]

path.delimiter

提供特定于平台的分隔符 。" ; " 或 ": " String 字符串
; 用于 Windows . : 用于 POSIX 。

例:
Windows:

 console.log(path.delimiter);

返回结果 :

;

path.posix

Object 对象
要在任何操作系统上使用 POSIX 文件路径时获得一致的结果,则使用 path . posix 。
可以提供对 path 方法的 POSIX 特定实现的访问 。
API 可通过 require( ’ path ’ ) . posix 或 require ( ’ path / posix ’ ) 访问。


path.win32

要在任何操作系统上使用 Windows 文件路径时获得一致的结果,则使用 path.win32 。
可以提供上述 path的方法,不过总是以 win32 兼容的方式交互。


源码 :

const path = require("path");

//path 模块提供了用于处理文件和目录的路径的实用工具。 
//在 Windows 操作系统上运行时,path 模块将假定正在使用 Windows 样式的路径


//方法 

//path.extname(path) 
//参数 path : String字符串
//如果 path 不是字符串,则抛出 TypeError
//返回结果 : String字符串
//返回 path 的扩展名,即 path 的最后一部分中从最后一次出现的 "."(句点)字符到字符串的结尾。 
//如果 path 的最后一部分中没有 ".",或者除了 path 的基本名称的第一个字符之外没有 "." 这个字符,则返回空字符串 .
console.log(path.extname("index.html"));
//.html
console.log(path.extname("index.coffee.md"));
//.md
console.log(path.extname("index.js"));
//.js


//path.join([...paths])  
//参数 ...paths : String 路径片段的序列
//返回结果 : String字符串
//如果任何路径片段不是字符串,则抛出 TypeError
//使用特定于平台的分隔符作为定界符将所有给定的 path 片段连接在一起,然后规范化生成的路径 . 零长度的 path 片段被忽略。 如果连接的路径字符串是零长度字符串,则将返回 '.',表示当前工作目录
//Windows系统 : "\" .
console.log(path.join("a", "b", "c"));
//a\b\c
console.log(path.join("a", "b", "c", "index.css"));
//a\b\c\index.css
console.log(path.join("a", "b", "../c", "index.html"));
//a\c\index.html


//path.normalize(path)
//参数 path : String字符串
//如果 path 不是字符串,则抛出 TypeError
//返回结果 : String字符串
//规范化给定的 path,解析 '..' 和 '.' 片段
console.log(path.normalize('C:\\temp\\\\foo\\bar\\..\\'));
//C:\temp\foo\
console.log(path.normalize('C:temp\\\\/\\/\\/foo/bar'));
//C:\temp\foo\bar


//path.resolve([...paths])
//参数 ..paths :String路径或路径片段的序列
//返回结果 : String字符串
//如果任何参数不是字符串,则抛出 TypeError
//将路径或路径片段的序列解析为绝对路径
//给定的路径序列从右到左处理,每个后续的 path 会被追加到前面,直到构建绝对路径
//如果在处理完所有给定的 path 片段之后,还没有生成绝对路径,则使用当前工作目录
//生成的路径被规范化,并删除尾部斜杠(除非路径解析为根目录). 零长度的 path 片段被忽略
//如果没有传入 path 片段,则 path.resolve() 将返回当前工作目录的绝对路径
console.log(path.resolve("./foo/bar", "./baz"));
//
console.log(path.resolve("/foo/bar", "tmp/file"));
//
console.log(path.resolve("wwwroot", "static_files/png", "../gif/image.gif"));
//

//path.isAbsolute(path)
//参数 path :String字符串
//如果 path 不是字符串,则抛出 TypeError
//返回结果 : Boolean布尔类型
//判断参数 path 是否为绝对路径
//如果给定的 path 是零长度字符串,则将返回 false
//如果是以“/”开头的路径,返回true
//console.log(path.isAbsolute('text/temp123'));
//false
console.log(path.isAbsolute('/text/temp123'));
//true
console.log(path.isAbsolute('./temp123'));
//false
console.log(path.isAbsolute('../temp123'));
//false
console.log(path.isAbsolute("foo/index.html"));
//false
console.log(path.isAbsolute('C:/foo/..'));
//true
console.log(path.isAbsolute('C:\\foo\\..'));
//true
console.log(path.isAbsolute('bar\\baz'));
//false
console.log(path.isAbsolute('bar/baz'));
//false
console.log(path.isAbsolute('/temp123'));
//true
console.log(path.isAbsolute('//temp123'));
//true
console.log(path.isAbsolute('///temp123'));
//true
console.log(path.isAbsolute('\temp123'));
//false
console.log(path.isAbsolute('\\temp123'));
//true
console.log(path.isAbsolute('\\\temp123'));
//true
console.log(path.isAbsolute('.'));
//false


//path.relative(from,to)
//参数 from : string字符串
//参数 to : string字符串
//返回结果 : string字符串
//如果 from 或 to 不是字符串,则抛出 TypeError
//根据当前工作目录返回从 from 到 to 的相对路径 . 如果 from 和 to 都解析为相同的路径(在分别调用 path.resolve() 之后),则返回零长度字符串 .
//如果 from 和 to 都解析为相同的路径(在分别调用 path.resolve() 之后),则返回零长度字符串
console.log(path.relative("C:\\text", "C:\\user\\img"));
//..\user\img
console.log(path.relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb'));
//..\..\impl\bbb


//path.dirname(path)
//参数 path : 字符串
//如果 path 不是字符串,则抛出 TypeError .
//返回结果 : 字符串
//返回 path 的目录名 , 即返回路径中代表文件夹的部分 ,尾随的目录分隔符被忽略
console.log(path.dirname("text / index.html"));
//text


//path.basename(path[ext])
//参数path : String字符串
//参数ext : String字符串
//如果 path 不是字符串,或者如果给定 ext 并且不是字符串,则抛出 TypeError
//返回结果 : 字符串
//返回路径中的最后一部分 , 尾随的目录分隔符被忽略
// Windows 通常以不区分大小写的方式处理文件名(包括文件扩展名),但此函数不会 .
console.log(path.basename("text/index.html"));
//index.html
console.log(path.basename("/text/index.html", "html"));
//index.html
//例如,C:\\foo.html 和 C:\\foo.HTML 指的是同一个文件,但 basename 将扩展名视为区分大小写的字符串:
console.log(path.basename('C:\\text\\foo.html', '.html'));
//foo
console.log(path.basename('C:\\text\\foo.HTML', '.html'));
// foo.HTML


//path.format(pathObject)
//参数 pathObject : Object 任何具有以下属性的 JavaScript对象
// dir String字符串
//root String字符串
//base String字符串
//name String字符串
//ext String字符串
//返回结果 : String字符串
//从对象中返回路径字符串 , 和 path.parse 相反
//当向 pathObject 提供属性时,请记住存在一个属性优先于另一个属性的组合:
//如果提供 pathObject.dir,则忽略 pathObject.root
//如果 pathObject.base 存在,则忽略 pathObject.ext 和 pathObject.name
console.log(path.format({
    dir: "C:\\path\\dir",
    base: "file.tet"
}));
//C:\path\dir\file.tet


//path.parse(path)
//参数 path : String字符串
//如果 path 不是字符串,则抛出 TypeError
//返回一个对象,其属性表示 path 的重要元素 . 尾随的目录分隔符被忽略
//返回的对象将具有以下属性:
//dir String
//root String
//base String
//name String
//ext String
console.log(path.parse('C:\\path\\dir\\file.txt'));
//{
//root: 'C:\\',
//dir: 'C:\\path\\dir',
//base: 'file.txt',
//ext: '.txt',
//name: 'file'
//}


//path.toNamespacedPath(path)
//参数 path : String字符串
//返回结果 : String字符串
//此方法仅在 Windows 系统上有意义 , 返回给定 path 的等效命名空间前缀路径 , 如果 path 不是字符串,则 path 将不加修改地返回
console.log(path.toNamespacedPath("text / index.js"));



//属性 : 

//path.sep
//平台的文件路径分隔符 , "\\"或""/" String字符串
//在 Windows 上,正斜杠 (/) 和反斜杠 (\) 都被接受作为路径片段分隔符
console.log('foo\\bar\\baz'.split(path.sep));
//[ 'foo', 'bar', 'baz' ]


//path.delimiter
//提供特定于平台的分隔符 . ";"或 ":" String字符串
//; 用于 Windows . : 用于 POSIX
//例: Windows:
console.log(path.delimiter)
//;


//path.posix
//Object对象
//要在任何操作系统上使用 POSIX 文件路径时获得一致的结果,则使用 path.posix . 可以提供对 path 方法的 POSIX 特定实现的访问 .
//API 可通过 require('path').posix 或 require('path/posix') 访问


//path.win32
要在任何操作系统上使用 Windows 文件路径时获得一致的结果,则使用 path.win32 . 可以提供上述 path 的方法,不过总是以 win32 兼容的方式交互。

参考文档 :
Node.js官网 --path文档
Node.js中文网 --path文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Romronronronronron

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值