12.23 搞定Node.js文件路径常用的操作方式

点击右上方红色按钮关注“小郑搞码事”,每天都能学到知识,搞懂一个问题!

大家好!我是/小郑搞码事/的小郑

今天和大家分享Node.js的path模块,它有哪些日常工作中常用的路径操作方式。

以下涉及到的例子都需要引入path模块:

<code>var path = require('path')/<code>

查询路径

<code>// 获取当前文件夹和文件名的完整路径
console.log(__dirname)
console.log(__filename)
// 获取当前执行目录shell所在位置
console.log(process.cwd())
// 将node命令定位到根目录下
process.chdir("/")
console.log(process.cwd())
// 查询bin目录安装的地方
console.log(process.execPath)/<code>

操作路径

<code>var dir = ['foo','bar','baz']
// foo/bar/baz - linux
console.log(dir.join('/'))
// foo\\bar\\baz - window
console.log(dir.join('\\\\'))
// /-linux \\-window
console.log(path.sep)
// foo/bar/baz
console.log(dir.join(path.sep))/<code>

环境变量

<code>// 获取分隔符 :
console.log(path.delimiter)
process.env.PATH.split(path.delimiter).forEach(function(dir) {
console.log(dir)
})
// 获取环境变量
console.log(process.env.PATH)/<code>

返回文件扩展名

<code>// path.extname
var filename = "/foo/bar/baz.txt"
var extname = path.extname(filename)
console.log(extname)/<code>

返回文件名

<code>// 方法:path.basename
var filename = "/foo/bar/baz.txt"
var file = path.basename(filename)
console.log(file)/<code>

返回父文件夹

<code>// 方法:path.dirname
// /foo/bar
var filename = "/foo/bar/baz.txt"
var file1 = path.dirname(filename)
console.log(file1)/<code>

序列化路径

<code>// 方法:path.normalize
var dirName = "/foo/bar/.././bar/../../baz"
var normalized = path.normalize(dirName)
console.log(normalized) // /baz

var normalizej = path.join("/foo/bar",".././bar","../../","/baz")
console.log(normalizej)/<code>

相对路径

<code>// 方法:path.relative
var from = '/foo/bar'
var to = '/baz/biff'

// 传两个参数都是绝对路径,返回的是第二个参数相对于第一个参数的路径
var relative = path.relative(from ,to)
console.log(relative)
// ../../baz/biff/<code>

其它方法

resolve:返回的是根目录下文件的绝对路径

<code>// path.resolve 返回的是根目录下文件的绝对路径
console.log(path.resolve('../foo/bar','./baz'))
// /Users/zhengwenping/project/learning/node-learn/n/<code>

join:拼路径

<code>var p = path.join('../foo/bar','./baz')
// ../foo/bar/baz
console.log(p)/<code>

isAbsolute:判断是否为绝对路径

<code>// false
console.log(path.isAbsolute('./foo/bar'))
// true
console.log(path.isAbsolute('/foo/bar'))/<code>

parse:输出路径的信息

<code>/**
* { root: '/',
dir: '/home/user/dir',
base: 'file.txt',
ext: '.txt',
name: 'file' }

*/
var parsed = path.parse('/home/user/dir/file.txt');
console.log(parsed)/<code>

format:parse的逆过程

<code>var pf = path.format({
dir: '/home/user/dir',
base: 'file.txt'
})
console.log(pf)
// /home/user/dir/file.txt/<code>


分享到:


相關文章: