一.问题描述与展示
笔者在E:\这是阿朔的文件夹\CSDN\2024.10.28创建了一个js文件
还在E:\这是阿朔的文件夹\CSDN\2024.10.28\Files创建了一个文件
如果按正常路径读取是没问题的
const fs = require('fs')
fs.readFile('./Files/01-readFile()方法.txt',(err, dataStr) => {
if(dataStr){
console.log('读取文件成功', dataStr.toString())
}else{
console.log('读取文件失败', err)
}
})
但是如果我不想在当前文件夹读取了,我想在上级文件夹读取就会出现一个问题
这里我们看到文件是执行成功了的,但是却出现了文件读取失败的问题
二.问题发生原因
因为node.js中在使用读写等方法的时候会以当前所处文件夹+在读写中输入的地址进行拼接
三.问题解决方法
1.使用绝对路径(不建议)
我们可以在使用读写方法时候使用绝对路径,但是这种方法可移植性很差所以不建议使用
const fs = require('fs')
fs.readFile('E:/这是阿朔的文件夹/CSDN/2024.10.28/Files/01-readFile()方法.txt',(err, dataStr) => {
if(dataStr){
console.log('读取文件成功', dataStr.toString())
}else{
console.log('读取文件失败', err)
}
})
2.使用__dirname
node.js给我们提供了一些固定的变量以方便我们解决此类问题,__dirname就是其中之一
__dirname:此变量表示当前文件所处的文件路径
const fs = require('fs')
fs.readFile(__dirname + '/Files/01-readFile()方法.txt',(err, dataStr) => {
if(dataStr){
console.log('读取文件成功', dataStr.toString())
}else{
console.log('读取文件失败', err)
}
})