# 路徑 (Path)
~~~
穩(wěn)定度: 3 - 穩(wěn)定
~~~
本模塊包含一套用于處理和轉(zhuǎn)換文件路徑的工具集。幾乎所有的方法僅對字符串進(jìn)行轉(zhuǎn)換, 文件系統(tǒng)是不會檢查路徑是否真實(shí)有效的。
通過 `require('path')` 來加載此模塊。以下是本模塊所提供的方法:
### path.normalize(p)
規(guī)范化字符串路徑,注意 `'..'` 和 `'.' 部分
當(dāng)發(fā)現(xiàn)有多個(gè)連續(xù)的斜杠時(shí),會替換成一個(gè); 當(dāng)路徑末尾包含斜杠時(shí),會保留; 在 Windows 系統(tǒng)會使用反斜杠。
實(shí)例:
~~~
path.normalize('/foo/bar//baz/asdf/quux/..')
// returns
'/foo/bar/baz/asdf'
~~~
### path.join([path1], [path2], [...])
組合參數(shù)中的所有路徑,返回規(guī)范化后的路徑。
參數(shù)必須是字符串。在 v0.8 版本非字符串參數(shù)會被悄悄忽略。 在 v0.10 及以后版本將會拋出一個(gè)異常。
實(shí)例:
~~~
path.join('foo', {}, 'bar')
// 拋出異常
TypeError: Arguments to path.join must be strings
~~~
### path.resolve([from ...], to)
將 `to` 參數(shù)解析為一個(gè)絕對路徑。
如果`to`不是一個(gè)相對于`from` 參數(shù)的絕對路徑,`to`會被添加到`from`的右邊,直到找出一個(gè)絕對路徑為止。如果使用`from`路徑且仍沒有找到絕對路徑時(shí),使用當(dāng)時(shí)路徑作為目錄。返回的結(jié)果已經(jīng)規(guī)范化,得到的路徑會去掉結(jié)尾的斜杠,除非得到的當(dāng)前路徑為root目錄。非字符串參數(shù)將被忽略。
另一種思考方式就是像在shell里面用一系列的‘cd’命令一樣.
~~~
path.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile')
~~~
相當(dāng)于:
~~~
cd foo/bar
cd /tmp/file/
cd ..
cd a/../subfile
pwd
~~~
不同的是,不同的路徑不需要存在的,也可能是文件。
示例:
~~~
path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif')
// 如果當(dāng)前工作目錄為 /home/myself/node,它返回:
'/home/myself/node/wwwroot/static_files/gif/image.gif'
~~~
### path.isAbsolute(path)
判定`path`是否為絕對路徑。一個(gè)絕對路徑總是指向一個(gè)相同的位置,無論當(dāng)前工作目錄是在哪里。
Posix 示例:
~~~
path.isAbsolute('/foo/bar') // true
path.isAbsolute('/baz/..') // true
path.isAbsolute('qux/') // false
path.isAbsolute('.') // false
~~~
Windows 示例:
~~~
path.isAbsolute('//server') // true
path.isAbsolute('C:/foo/..') // true
path.isAbsolute('bar\\baz') // false
path.isAbsolute('.') // false
~~~
### path.relative(from, to)
解決從`from`到`to`的相對路徑。
有時(shí)我們有2個(gè)絕對路徑, 我們需要從中找出相對目錄的起源目錄。這完全是`path.resolve`的相反實(shí)現(xiàn),我們可以看看是什么意思:
~~~
path.resolve(from, path.relative(from, to)) == path.resolve(to)
~~~
示例:
~~~
path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb')
// 返回
'../../impl/bbb'
~~~
### path.dirname(p)
返回路徑中文件夾的名稱. 類似于Unix的`dirname` 命令.
實(shí)例:
~~~
path.dirname('/foo/bar/baz/asdf/quux')
// returns
'/foo/bar/baz/asdf'
~~~
### path.basename(p, [ext])
返回路徑中的最后哦一部分. 類似于Unix 的 `basename` 命令.
實(shí)例:
~~~
path.basename('/foo/bar/baz/asdf/quux.html', '.html')
// returns
'quux'
~~~
- 關(guān)于本文檔
- 概述
- 斷言 (assert)
- Buffer
- Addons插件
- 子進(jìn)程
- 集群
- 控制臺
- 加密(Crypto)
- 調(diào)試器
- DNS
- 域
- 事件 (Events)
- File System
- 全局對象
- HTTP
- HTTPS
- Modules
- net
- 操作系統(tǒng)
- 路徑 (Path)
- process
- punycode
- Query String
- Readline
- REPL
- Smalloc
- 流
- 字符串解碼器
- 定時(shí)器
- TLS (SSL)
- TTY
- UDP / 數(shù)據(jù)報(bào)套接字
- URL
- utils
- 執(zhí)行 JavaScript
- Zlib
- 進(jìn)度
- 感謝
