目录
一.怎样解决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));