路径动态拼接

用fs文件系统模块

在使用fs模块操作文件时,如果提供的操作路径是以./或../开头的相对路径时,很容易出现路径动态拼接错误的问题
原因:代码在运行的时候,会以执行 node 命令时所处的目录,动态拼接出被操作文件的完整路径
解决方案:
1.在使用fs模块操作文件时,直接提供完整的路径,不要提供./或../开头的相对路径,从而防止路径动态拼接的问题。缺点:移植性非常差,不利于维护
2.使用 __dirname + ‘相对路径’,__dirname表示当前文件所处的目录

1
2
3
4
5
6
7
const fs = require('fs');
fs.readFile(__dirname+'/files/1.txt','utf-8',function(err,dataStr) {
if(err) {
return console.log('读取文件失败!'+err.message);
}
console.log('读取文件成功'+dataStr);
})

用path路径模块

使用path.join()方法,可以把多个路径片段拼接为完整的路径字符串

1
2
3
4
5
6
7
8
9
10
const fs = require('fs');
const path = require('path');
const pathStr = path.join(__dirname,'/files/1.txt');
fs.readFile(pathStr,'utf-8',function(err,dataStr) {
if(err) {
return console.log('读取文件失败!'+err.message);
}
console.log('读取文件成功'+dataStr);
})