Node.js——三种方法解决fs模块路径动态拼接的问题

目录

一.怎样解决fs模块路径动态拼接的问题

二.完美解决方案

1.path模块的join方法解决动态路径拼接

2.path.basename()方法获取路径文件名

 3.path.extname()方法获取路径扩展名


一.怎样解决fs模块路径动态拼接的问题

当我们使用fs模块来操作文件时,我们如果使用相对路径的话,很容易出现路劲动态拼接错误的情况,JS在Node.js环境中运行的时候,执行的是当前所在的目录拼接上被操作文件的路径,这时如果我们不在当前文件的路径,无论怎么样手动添加补充完整路径,都不会被Node执行到当前的文件,为了解决这个问题,我们可以写入一个完整的路径

const fs = require('fs');
fs.writeFile('E:\\ccc\\Node\\writeFile写入内容\\测试写入.txt','我是要写入的内容',function(err){
    if(err){
        return console.log("失败" + err.message);
    }
    console.log("成功");
})

这样就可以解决这个动态拼接的问题,这是第一种方案,可是我们不难发现,这么一长串,维护起来真的是不方便,而且移植性非常的差

所以Node为我们提供了__dirname,可以用来代替当前文件所处的目录:

const fs = require('fs');
fs.writeFile(__dirname + '测试写入.txt','我是要写入的内容',function(err){
    if(err){
        return console.log("失败" + err.message);
    }
    console.log("成功");
})

这样我们也可以成功的执行,并且非常的方便与移植和维护


二.完美解决方案

上面的__dirname+文件路径并不是最完美的解决方案,如果我们在文件路径前添加上./,那么执行的时候,./也会被写入执行,这时便不能操作文件了

Node.js为我们提供了一个path模块,专门用来处理路劲的一个模块,可以完美的解决这些问题

path模块有三种常用方法:

path.join([...paths]):可以将join方法中的所有路径拼接起来

...paths填写路径片段序列,返回值为拼接好的路径

path.basename(path[,ext]):可以获取路径中的最后一部分,也就是路径中的文件名

ext:可选参数,表示文件的扩展名,如果我们加上了ext参数,那么获取到的文件名没有扩展名,返回值为扩展名

path填写需要操作的路径,返回值得到扩展名字符串

path.extname(path):可以获取路径中的扩展名,也就是我们所操作的文件的扩展名

path填写需要操作的路径,返回值得到扩展名字符串

1.path模块的join方法解决动态路径拼接

无论是使用什么模块,第一步无非就是导入模块:

const path = repuire('path');

然后我们拼接一下路径,看看是否可以正常输出:

const fs = require('fs');
const path = require('path');
fs.writeFile(path.join(__dirname,'测试写入.txt'),'我是要写入的内容',function(err){
    if(err){
        return console.log("失败" + err.message);
    }
    console.log("成功");
})

 tips:path.join()方法可以拼接多个路径字符串;当我们拼接../时,会执行返回上一级的命令

2.path.basename()方法获取路径文件名

const path = require('path');
let l = path.join(__dirname,'./测试写入.txt');
console.log(path.basename(l,'.txt'));

 3.path.extname()方法获取路径扩展名

const path = require('path');
let l = path.join(__dirname,'./测试写入.txt');
console.log(path.extname(l));

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Try Tomato

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值