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 兼容的方式交互。
Comments | NOTHING