fs模块-路径动态拼接的问题

在使用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);
})

 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjM0MDA2MTE=,size_20,color_FFFFFF,t_70,g_se,x_16

 

另一种解决方案

使用__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);
})

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值