点击上方蓝字关注“小郑搞码事”,每天都能学到知识,搞懂一个问题!
这篇总结的是Node.js中,文件路径操作(这个是后面内容的重要基础),不是文件系统操作(下一篇),所以,前提是先要引入文件路径操作path文件。
var path = require('path')
有关于这些规定死的东西,作为开发者,至少要知道有这些方法,而且知道怎么使用这些方法。所以如果你从头到尾把这篇文章看一遍,那这两个目的你也就达到了。关于文件路径操作,我总结了一下,大概分成9类,(都很简单易懂)下面一个一个来看。
对于路径,首先,我们要知道怎么怎么查询,然后才是操作,下面是一个例子:
由上图可以看出:
__dirname:指当前文件夹的完整路径。
__filename:指当前文件名的完整路径。
process.cwd():指当前执行node命令时的文件夹的路径。
process.chdir():改变工作目录。
process.execPath:指node执行文件的安装路径。
下面是上面那段代码执行的结果:
个人觉得这里需要注意理解__dirname和process.cwd()的区别。
有关操作路径,其实就是一个数组的join方法,其次node的path.sep方法,它默认得到路径分隔符。看一个例子:
这个例子的结果是:
理解起来不困难,需要注意的是:path.sep在window下打印的是'\'而不是'/'。同时在window下使用join方法的正确姿势是join('\')。当然,path.sep的用法还可以用来将路径字符串转换成数组。
下面我们顺便看一下path.sep的定义用法。
path.sep方法:将特定文字分隔符'\'或'\'的字符串转换成数组对象。以上面那个字符串为例:
'foo/bar/baz'.split(path.sep)
将会输出一个数组:[ 'foo', 'bar', 'baz' ]
同样通过一个例子来说明:
上面这个例子中,path.delimiter提供的是具体路径分隔符,';'(windows)':'(其它)。process.env.PATH提供的是环境变量的完整路径。因此,打印出来的结果如下图所示:
方法:path.extname
上面代码返回:'.txt'。
方法:path.basename
上面代码返回:'baz.txt'。
方法:path.dirname
上面代码返回:'/foo/bar'
方法:path.normalize
上面代码返回:'/baz'。
当然,实现上面同样功能的,还有path.join():
path.join("/foo/bar", ".././bar", "../..", "/baz")
join这个方法在文章最后会提到。
方法:path.relative
上面代码返回:'../../baz/biff'
除了上面这些,还有一些常用的方法:
1、path.resolve(from,to):将参数to位置的字符解析到一个绝对路径里。
如:console.log(path.resolve('../foo/bar','./baz'))
输出:/foo/bar/baz
2、path.join():将多个参数组合成一个path。
如:console.log(path.join('../foo/bar','./baz'))
输出:../foo/bar/baz
3、path.isAbsolute():判断是否是一个绝对路径。
如:console.log(path.isAbsolute('./foo/bar'),path.isAbsolute('/foo/bar'))
输出:false true
4、path.parse():输出路径信息
如:path.parse('/home/user/dir/file.txt')
输出:{root:'/',dir:'/home/user/dir',base:'file.txt',ext:'.txt',name:'file'}
5、path.format():还原一个完整路径
如:path.format({dir:'/home/user/dir',base:'file.txt'})
输出:/home/user/dir/file.txt
还是文章开头的那句话,这些文件操作的方法简单易懂,在node.js官网上也有详细的说明,但这些都是学习node.js其它内容的重要基础,下一篇我来写一下文件系统操作。可以期待一下
以上都是个人理解,如有不对的地方,请留言交流!!!也可以关注,一起学习后面的内容