在使用fs模块操作文件时,如果提供的操作路径是以 './' 或 '../' 开头的相对路径时,很容易出现路径动态拼接错误的问题
原因: 代码在运行的时候,会以执行node命令时所处的目录,动态拼接出被操作文件的完整路径
解决方案: 如果要解决这个问题,可以直接提供一个完整的文件存放路径,避免路径动态拼接问题
代码
const fs = require('fs');
//出现路径拼接错误的问题 是因为提供了 ./ 或 ../开头的相对路径
//如果要解决这个问题 可以直接提供一个完整的文件存放路径
// fs.readFile('./files/1.txt', 'utf8', function(err, dataStr) {
// if (err) {
// return console.log('读取文件失败!', +err.message);
// }
// console.log('读取文件成功!' + dataStr);
// })
//绝对路径形式 路径分隔需要补全为 '\\'
//缺点在于移植性非常的差 而且不利于维护
fs.readFile('D:\\DW\\黑马\\node.js\\演示路径问题\\files\\1.txt', function(err, dataStr) {
if (err) {
return console.log('读取文件失败!', +err.message);
}
console.log('读取文件成功!' + dataStr);
})
另一种解决方案
使用__dirname补充前面的路径
__dirname可以获取当前文件所在的目录
//__dirname 表示当前文件所处的目录
console.log(__dirname);
fs.readFile(__dirname + '/files/1.txt', function(err, dataStr) {
if (err) {
return console.log('读取文件失败!', +err.message);
}
console.log('读取文件成功!' + dataStr);
})