node path 學習

path 模塊

提供用於處理文件路徑和目錄路徑的實用工具
使用方法:const path = require('path');

path的屬性與方法

  • path.dirname(path)
    返回 path 的目錄名
    Windows 上:html

    > path.dirname('C:\\orandea\\test\\index.html');
       'C:\\orandea\\test'
       > path.dirname('/foo/bar/baz/asdf/quux');
       '/foo/bar/baz/asdf'

    POSIX 上:node

    > 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 上:ui

    > 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 上:spa

    > path.delimiter
       ';'

    POSIX 上:code

    > path.delimiter
       ':'
  • path.sep
    提供特定於平臺的路徑片斷分隔符
    Windows 上:orm

    > path.sep
       '\\'

    POSIX 上:server

    > path.sep
       '/'
  • path.isAbsolute(path)
    檢測 path 是否爲絕對路徑
    在 Windows 上:htm

    > 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 "
       └──────┴──────────────┴──────┴─────┘
    1. root 是dir的子集,因此若是同時提供dir 和 root,則忽略root
    2. 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'
相關文章
相關標籤/搜索