//导入
const fs = require('fs');
//读取文件
// 路径 解码方式 回调函数||读取错误时||读取正确时
fs.readFile('./01.demo.txt', 'utf-8', function (err, dataStr) {
//通过判断err是否为null,说明是否读取成功,null转Boolean类型是false
if (err) {
console.log("读取文件失败:" + err.message);
return;
}
const arr1 = dataStr.split(' ');
//console.log(arr1);
const arr2 = [];
arr1.forEach(function (item) {
arr2.push(item.replace('=', ':'));
})
const newStr = arr2.join('\r\n');
console.log(newStr);
});
//写入文件
// 路径 内容 编码方式(可省略) 回调函数
/* (如果路径正确文件不存在会创建一个,路径错误则错误)
fs.writeFile("./01.demo.txt", "hellomotherfucker", "utf-8", function (err) {
if(err){
console.log("写入文件失败:" + err.message);
return;
}
console.log("文件写入成功");
})*/
视频指出
在使用fs模块操作文件时,如果提供的操作路径是以./或../开头的相对路径时,很容易出现路径动态拼接错误的问题。原因:代码在运行的时候,会以执行node命令时所处的目录,动态拼接出被操作文件的完整路径。
话说这为什么要这样拼接呢,根据相对路径不是能直接找到吗?
视频又指出解决方案:用绝对路径(我并不是很赞同,又臭又长)
视频又优化了解决方案:用__dirname(表示当前文件所处路径)+相对路径(这还差不多)
path.join([path1][, path2][, ...])
用于连接路径。该方法的主要用途在于,会正确使用当前系统的路径分隔符,Unix系统是"/",Windows系统是"\"。
这样上边的路径可以path.join('__dirname' , ' ./xxxxxxx');
需要注意,和 ../ 拼接时会回退一级
path.basename(p[, ext])
返回路径中的最后一部分。
参数p是路径字符串
参数ext是文件后缀名,可选
只传路径名返回结果是末尾的文件包括后缀,传后缀的的话,只返回文件名字不包括后缀
path.extname(p)
返回路径中文件的后缀名,即路径中最后一个'.'之后的部分。如果一个路径中并不包含'.'或该路径只包含一个'.' 且这个'.'为路径的第一个字符,则此命令返回空字符串。