路径处理
最后更新于:2022-04-02 06:52:40
## 路径处理
在开发命令行程序的时候,我们经常需要做路径的拼接、转换、相对路径和绝对路径互转,拆分路径等,这个时候,使用`NodeJs`的内置模块[path](http://nodejs.cn/api/path.html)就能轻松搞定这些问题。
[TOC]
### path的引用
~~~
var path = require('path');
~~~
### path常用方法
#### path.basename
* `path.basename(path[, ext])`
* `path `
* `ext 可选的文件扩展名`
* `返回: `
`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 `
* `返回: `
`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 ` 一个路径片段的序列
* `返回: `
>`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 一个路径或路径片段的序列`
* `返回: `
>**`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**
';