node path 學習
path 模組
提供用於處理檔案路徑和目錄路徑的實用工具 使用方法:const path = require('path');
path的屬性與方法
-
path.dirname(path)
返回 path 的目錄名
Windows 上:
> path.dirname('C:\\orandea\\test\\index.html'); 'C:\\orandea\\test' > path.dirname('/foo/bar/baz/asdf/quux'); '/foo/bar/baz/asdf'
POSIX 上:
> path.dirname('C:\\orandea\\test\\index.html'); '.' > path.dirname('/foo/bar/baz/asdf/quux'); '/foo/bar/baz/asdf'
-
path.extname(path)
返回 path 的副檔名
Windows上:
> path.extname('C:\\orandea\\test\\index.html'); '.html' > path.extname('/foo/bar/baz/asdf/quux.test.md'); '.md' > path.extname('index.'); '.' > path.extname('index'); '' > path.extname('.index'); ''
POSIX 上:
> path.extname('C:\\orandea\\test\\index.html'); '.html' > path.extname('/foo/bar/baz/asdf/quux.test.md'); '.md' > path.extname('index.'); '.' > path.extname('index'); '' > path.extname('.index'); ''
-
path.delimiter
提供特定於平臺的路徑分隔符
Windows 上:
> path.delimiter ';'
POSIX 上:
> path.delimiter ':'
-
path.sep
提供特定於平臺的路徑片段分隔符
Windows 上:
> path.sep '\\'
POSIX 上:
> path.sep '/'
-
path.isAbsolute(path)
檢測 path 是否為絕對路徑
在 Windows 上:
> path.isAbsolute('//server'); true > path.isAbsolute('\\\\server'); true > path.isAbsolute('C:/foo/..'); true > path.isAbsolute('C:\\foo\\..'); true > path.isAbsolute('D:/foo/..'); true > path.isAbsolute('D:\\foo\\..'); true > path.isAbsolute('bar\\baz'); false > path.isAbsolute('bar/baz'); false > path.isAbsolute('.'); false
在 POSIX 上:
> path.isAbsolute('//server'); true > path.isAbsolute('\\\\server'); false > path.isAbsolute('C:/foo/..'); false > path.isAbsolute('C:\\foo\\..'); false > path.isAbsolute('D:/foo/..'); false > path.isAbsolute('D:\\foo\\..'); false > path.isAbsolute('bar\\baz'); false > path.isAbsolute('bar/baz'); false > path.isAbsolute('.'); false
如果給定的 path 是零長度字串,則返回 false
> path.isAbsolute('') false
-
path.relative(from, to)
根據當前工作目錄返回 from 到 to 的相對路徑
在 Windows 上: > path.relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb'); '..\\..\\impl\\bbb' 在 POSIX 上: > path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb'); '../../impl/bbb'
如果 from 和 to 路徑相同,則返回零長度的字串
在 Windows 上: > path.relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\test\\aaa'); '' 在 POSIX 上: > path.relative('/data/orandea/test/aaa', '/data/orandea/test/aaa'); ''
如果將零長度的字串傳入 from 或 to,則使用當前工作目錄代替該零長度的字串
在 Windows 上: > path.relative('C:\\orandea\\test\\aaa', ''); 'D:\\nodejs' > path.relative('', 'C:\\orandea\\test\\aaa'); 'C:\\orandea\\test\\aaa' 在 POSIX 上: > path.relative('/data/orandea/test/aaa', ''); '../../../../root' > path.relative('', '/data/orandea/test/aaa'); '../data/orandea/test/aaa'
-
path.resolve([...paths])
將路徑或路徑片段的序列解析為絕對路徑,給定的路徑序列從右到左進行處理,產生絕對路徑後直接返回。不會再處理其他引數
在 Windows 上:
> path.resolve('/foo/bar', 'baz'); 'D:\\foo\\bar\\baz' > path.resolve('/foo/bar', './baz'); 'D:\\foo\\bar\\baz' > path.resolve('/foo/bar', '/baz'); 'D:\\baz'
在 POSIX 上:
> path.resolve('/foo/bar', 'baz'); '/foo/bar/baz' > path.resolve('/foo/bar', './baz'); '/foo/bar/baz' > path.resolve('/foo/bar', '/baz'); '/baz'
如果在處理完所有給定的 path 片段之後還未生成絕對路徑,則再加上當前工作目錄。
在 Windows 上: > path.resolve('bar', 'baz'); 'D:\\nodejs\\bar\\baz' 在 POSIX 上: > path.resolve('bar', 'baz'); '/root/bar/baz'
生成的路徑已規範化,並且除非將路徑解析為根目錄,否則將刪除尾部斜槓。
在 Windows 上: > path.resolve('/foo/bar/'); 'D:\\foo\\bar' 在 POSIX 上: > path.resolve('/foo/bar/'); '/foo/bar'
零長度的 path 片段會被忽略。
在Windows上: > path.resolve('', 'baz'); 'D:\\nodejs\\baz' > path.resolve('bar', ''); 'D:\\nodejs\\bar' 在 POSIX 上: > path.resolve('', 'baz'); '/root/baz' > path.resolve('bar', ''); '/root/bar'
如果沒有傳入 path 片段,則 path.resolve() 將返回當前工作目錄的絕對路徑。
在 Windows 上: > path.resolve(''); 'D:\\nodejs' 在 POSIX > path.resolve(''); '/root'
-
path.join([...paths])
使用平臺特定的分隔符作為定界符將所有給定的 path 片段連線在一起,然後規範化生成的路徑
在 Windows 上: > path.join('/foo', 'bar', 'baz/asdf', 'quux', '..'); '\\foo\\bar\\baz\\asdf' > path.join('foo', '', 'bar'); 'foo\\bar' 在 POSIX 上: > path.join('/foo', 'bar', 'baz/asdf', 'quux', '..'); '/foo/bar/baz/asdf' > path.join('foo', '', 'bar'); 'foo/bar'
如果連線的路徑字串是零長度的字串,則返回 '.',表示當前工作目錄
> path.join(''); '.'
-
path.normalize(path)
規範化給定的 path,當在path中找到多個連續的路徑段分隔字元時,則替換成單個平臺特定的路徑段分隔符,尾部的分隔符會保留
在 Windows 上:
> path.normalize('C:\\temp\\\\foo\\bar\\..\\'); 'C:\\temp\\foo\\' > path.win32.normalize('C:////temp\\\\/\\/\\/foo/bar'); 'C:\\temp\\foo\\bar'
在 POSIX 上:
> path.normalize('/foo/bar//baz/asdf/quux/..'); '/foo/bar/baz/asdf'
-
path.format(pathObject)
從物件返回路徑字串。 與 path.parse() 相反。
pathObject <Object>:
dir <string> root <string> base <string> name <string> ext <string>
path的屬性關係如下:
┌─────────────────────┬────────────┐ │dir│base│ ├──────┬├──────┬─────┤ │ root ││ name │ ext │ "/home/user/dir / file.txt " └──────┴──────────────┴──────┴─────┘
- root 是dir的子集,所以如果同時提供dir 和 root,則忽略root
- base = name + ext, 如果同時提供base, name和ext, 則忽略name和ext
Windows 上: > path.format({ ...dir: 'C:\\path\\dir', ...base: 'file.txt' ... }); 'C:\\path\\dir\\file.txt' POSIX 上: //同時提供dir 和 root,則忽略root > path.format({ ...root: '/ignored', ...dir: '/home/user/dir', ...base: 'file.txt' ... }); '/home/user/dir/file.txt' //時提供base和ext, 則忽略ext > path.format({ ...root: '/', ...base: 'file.txt', ...ext: 'ignored' ... }); '/file.txt' //如果未指定 `base`,則使用 `name` + `ext` > path.format({ ...root: '/', ...name: 'file', ...ext: '.txt' ... }); '/file.txt'
-
path.parse(path)
根據路徑字串返回一個物件,與 path.format() 相反。
返回的物件將具有以下屬性:
dir <string> root <string> base <string> name <string> ext <string>
Windows 上:
> path.parse('C:\\path\\dir\\file.txt'); { root: 'C:\\', dir: 'C:\\path\\dir', base: 'file.txt', ext: '.txt', name: 'file' }
POSIX 上:
> path.parse('/home/user/dir/file.txt'); { root: '/', dir: '/home/user/dir', base: 'file.txt', ext: '.txt', name: 'file' }
-
path.basename(path[, ext])
返回 path 的最後一部分,尾部的目錄分隔符將被忽略.
Windows 上:
> path.basename('C:\\temp\\myfile.html'); 'myfile.html' > path.win32.basename('C:\\temp\\myfile.html'); 'myfile.html' > path.posix.basename('C:\\temp\\myfile.html'); 'C:\\temp\\myfile.html' > path.basename('/temp/myfile.html'); 'myfile.html' > path.win32.basename('/temp/myfile.html'); 'myfile.html' > path.posix.basename('/temp/myfile.html'); 'myfile.html' > path.basename('/temp/myfile.html', '.html'); 'myfile' > path.basename('/temp/myfile.html', 'xxx'); 'myfile.html'
POSIX 上:
> path.basename('C:\\temp\\myfile.html'); 'C:\\temp\\myfile.html' > path.win32.basename('C:\\temp\\myfile.html'); 'myfile.html' > path.posix.basename('C:\\temp\\myfile.html'); 'C:\\temp\\myfile.html' > path.basename('/temp/myfile.html'); 'myfile.html' > path.win32.basename('/temp/myfile.html'); 'myfile.html' > path.posix.basename('/temp/myfile.html'); 'myfile.html' > path.basename('/temp/myfile.html', '.html'); 'myfile' > path.basename('/temp/myfile.html', 'xxx'); 'myfile.html'
-
path.win32
提供對 特定於 Windows 的 path 方法的實現 的訪問 > path.win32 { resolve: [Function: resolve], normalize: [Function: normalize], isAbsolute: [Function: isAbsolute], join: [Function: join], relative: [Function: relative], toNamespacedPath: [Function: toNamespacedPath], dirname: [Function: dirname], basename: [Function: basename], extname: [Function: extname], format: [Function: format], parse: [Function: parse], sep: '\\', delimiter: ';', win32: [Circular], posix: { resolve: [Function: resolve], normalize: [Function: normalize], isAbsolute: [Function: isAbsolute], join: [Function: join], relative: [Function: relative], toNamespacedPath: [Function: toNamespacedPath], dirname: [Function: dirname], basename: [Function: basename], extname: [Function: extname], format: [Function: format], parse: [Function: parse], sep: '/', delimiter: ':', win32: [Circular], posix: [Circular], _makeLong: [Function: toNamespacedPath] }, _makeLong: [Function: toNamespacedPath] }
-
path.posix
提供對 特定於 POSIX 的 path 方法的實現 的訪問 > path.posix { resolve: [Function: resolve], normalize: [Function: normalize], isAbsolute: [Function: isAbsolute], join: [Function: join], relative: [Function: relative], toNamespacedPath: [Function: toNamespacedPath], dirname: [Function: dirname], basename: [Function: basename], extname: [Function: extname], format: [Function: format], parse: [Function: parse], sep: '/', delimiter: ':', win32: { resolve: [Function: resolve], normalize: [Function: normalize], isAbsolute: [Function: isAbsolute], join: [Function: join], relative: [Function: relative], toNamespacedPath: [Function: toNamespacedPath], dirname: [Function: dirname], basename: [Function: basename], extname: [Function: extname], format: [Function: format], parse: [Function: parse], sep: '\\', delimiter: ';', win32: [Circular], posix: [Circular], _makeLong: [Function: toNamespacedPath] }, posix: [Circular], _makeLong: [Function: toNamespacedPath] }
-
path.toNamespacedPath(path)
僅在 Windows 系統上,返回給定 path 的等效名稱空間字首路徑
> path.toNamespacedPath('C:\\temp\\myfile.html') '\\\\?\\C:\\temp\\myfile.html' > path.toNamespacedPath('/temp/myfile.html') '\\\\?\\D:\\temp\\myfile.html'