## 路径处理 在开发命令行程序的时候,我们经常需要做路径的拼接、转换、相对路径和绝对路径互转,拆分路径等,这个时候,使用`NodeJs`的内置模块[path](http://nodejs.cn/api/path.html)就能轻松搞定这些问题。 [TOC] ### path的引用 ~~~ var path = require('path'); ~~~ ### path常用方法 #### path.basename * `path.basename(path[, ext])` * `path <String>` * `ext <String> 可选的文件扩展名` * `返回: <String>` `path.basename() `方法返回一个` path `的最后一部分,类似于` Unix `中的 `basename `命令。 例子: ~~~ path.basename('/foo/bar/baz/asdf/quux.html') // 返回: 'quux.html' path.basename('/foo/bar/baz/asdf/quux.html', '.html') // 返回: 'quux' ~~~ 如果 path 不是一个字符串或提供了` ext `但不是一个字符串,则抛出 `TypeError`。 #### path.extname * ` path.extname(path)` * `path <String>` * `返回: <String>` `path.extname() `方法返回 `path `的扩展名,即从 `path `的最后一部分中的最后一个 .(句号)字符到字符串结束。 如果 `path `的最后一部分没有 . 或 `path` 的文件名(见 `path.basename()`)的第一个字符是 .,则返回一个空字符串。 ~~~ path.extname('index.html') // 返回: '.html' path.extname('index.coffee.md') // 返回: '.md' path.extname('index.') // 返回: '.' path.extname('index') // 返回: '' path.extname('.index') // 返回: '' ~~~ 如果` path` 不是一个字符串,则抛出 `TypeError`。 #### path.join * `path.join([...paths])` * `...paths <String>` 一个路径片段的序列 * `返回: <String>` >`path.join() `方法使用平台特定的分隔符把全部给定的 `path `片段连接到一起,并规范化生成的路径。 >长度为零的 `path` 片段会被忽略。 如果连接后的路径字符串是一个长度为零的字符串,则返回 '.',表示当前工作目录。 例子: ~~~ path.join('/foo', 'bar', 'baz/asdf', 'quux', '..') // 返回: '/foo/bar/baz/asdf' path.join('foo', {}, 'bar') // 抛出 TypeError: path.join 的参数必须为字符串 ~~~ 如果任一路径片段不是一个字符串,则抛出` TypeError`。 #### path.resolve * `path.resolve([...paths])` * `...paths <String> 一个路径或路径片段的序列` * `返回: <String>` >**`path.resolve() `方法会把一个路径或路径片段的序列解析为一个绝对路径。** >给定的路径的序列是从右往左被处理的,后面每个` path `被依次解析,直到构造完成一个绝对路径。 例如,给定的路径片段的序列为:/`foo、/bar、baz`,则调用 `path.resolve('/foo', '/bar', 'baz') `会返回` /bar/baz`。 >**如果处理完全部给定的 `path` 片段后还未生成一个绝对路径,则当前工作目录会被用上。** >生成的路径是规范化后的,且末尾的斜杠会被删除,除非路径被解析为根目录。 >长度为零的` path `片段会被忽略。 >**如果没有传入 `path `片段,则` path.resolve() `会返回当前工作目录的绝对路径。** 例子: ~~~ path.resolve('baz', 'js','test');//最常用 //如果当前工作目录为 /foo/bar //则返回 ‘/foo/bar/baz/js/test path.resolve('/foo/bar', './baz') // 返回: '/foo/bar/baz' path.resolve('/foo/bar', '/tmp/file/') // 返回: '/tmp/file' path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif') // 如果当前工作目录为 /home/myself/node, // 则返回 '/home/myself/node/wwwroot/static_files/gif/image.gif' ~~~ ### path API地址 **Node.js中文网path的API:http://nodejs.cn/api/path.html**