文件操作中的相对路径可以省略 ./
fs.readFile('data/a.txt', function (err, data) {
if (err) {
return console.log('读取失败')
}
console.log(data.toString())
})
fs.readFile('./data/a.txt', function (err, data) {
if (err) {
console.log(err)
return console.log('读取失败')
}
console.log(data.toString())
})
在模块加载中,相对路径中的 ./ 不能省略
// Error: Cannot find module 'data/foo.js'
require('data/foo.js')
require('./data/foo.js')
// 这里如果忽略了 . 则也是磁盘根目录
require('/data/foo.js')
// ./data/a.txt 相对于当前目录
// data/a.txt 相对于当前目录
// /data/a.txt 绝对路径,当前文件模块所处磁盘根目录
// c:/xx/xx... 绝对路径
Note:使用的所有文件操作API都是异步的,就像ajax请求一样;会显示后面直接调用的内容,再显示出请求的内容
path路径操作模块:
path.basename:获取一个路径的文件名(默认包含扩展名);
path.dirname:获取路径中的目录部分
path.extname:获取路径中的扩展名
path.parse:把一个路径转化为对象
- root跟路径
- dir目录
- base包含后后缀名文件
- ext后缀名
name不包含后缀名的文件名
path.jion:可以把路径拼接起来
path.isAbsolute:判断一个路径是否绝对路径
Node中的其他模块成员:
在每个模块中,除了require,express这些API,还有两个特殊的成员:
- _dirname:动态获取当前文件模块所属目录的绝对路径;
- _filename:动态获取当前文件的绝对路径;
- _dirname和-filename是不受node执行命令的影响
在文件操作中,使用系相对路径是不可靠的,因为在Node中文件操作路径是相对于node命令行所处的路径为基准,我们只有把相对路径变为绝对路径才能解决这个问题;
可以使用_dirname和_filename,在拼接过程中,可以使用path.join()方法来避免是否 / 的低级错误,