目录
一.fs模块的介绍与初始化
fs模块是node内置API模块,它是用来操作文件的模块
我们可以只用fs模块中的fs.readFile()方法和fs.wirteFile()方法来对文件进行操作:
fs.readFile():读取指定文件内容
fs.writeFile():向指定文件中写入内容
不过想要在JS代码中使用fs模块操作文件的话我们需要 先导入fs模块:
这才是第一步:
const fs = require('fs');
我们调用require()方法来导入fs模块并给到变量fs
然后我们开始进行读写文件的操作:
二.fs.readFile()读取文件
语法:fs.readFile(path[,options],callback)
path:必填项,填写我们要读取的文件路径
options:可选项,表示以什么样的编码格式来读取文本
callback:必填项,文件读取完成之后,通过此回调函数拿到读取结果
(回调函数需有俩个形参:(err,data)分别表示读取失败和读取成功)
我们首先需要一个JS文件和一个文档:
接下来我们编辑JavaScript代码:
当我们在终端(我们也可以在当前文件夹中打开cmd终端来运行,和VSCode效果一样)中执行index.js文件时,我们发现输出了:读取失败null字样
真的是我们读取失败了吗?并不是,因为我给到判断式的值就是err,err是错误的表示,那么它输出err为null,那么就是没有错的意思
那既然这样,不妨将将err的值作为判断的依据,如果err为null(成功),那么我们输出data成功获取到的值,否则的话输出读取失败以及失败原因
//导入fs模块
const fs = require('fs');
//调用readFile方法,给到文件路径以及成功和失败的值
fs.readFile('./测试.txt',function(err,data){
//判断读取是否成功,输出想对应的值
err == null ? console.log(data.toString()) : console.log("读取失败" + err) ;
})
第二种方法:
const fs = require('fs');
fs.readFile('./测试.txt','utf8',function(err,data){
if(err){
console.log("读取失败" + err.message);
}else{
console.log("读取成功" + data);
}
});
失败演示:
我们改变文件名,这时读取不到文件,err参数就会返回错误对象,告知我们该路径下没有相对应文件
三.小结
总之,除了readFile()方法的使用,我们还知道:
如果读取成功,err值为null
如果读取失败,err值为错误对象(失败的话data值为undefined)
所以我们可以根据err值是否为null来判断文件是否读取成功
四.fs.writeFile()方法向指定文件中写入内容
语法:fs.writeFile(file,data[,options],callback)
file:必填项,需要填写文件存放路径
data:必填项,填写我们要写入的内容
options:可选项,表示以什么样的编码格式来上传文本(默认为utf8)
callback:必填项,文件上传完成之后,通过此回调函数拿到上传结果
(回调函数需有一个形参:(err)表示失败)上传成功err值为null,上传失败err值为一个错误对象
const fs = require('fs');
fs.writeFile('./测试.txt','这是我新加进去的数据',function(err){
if(err){
console.log("读取失败" + err);
}else{
console.log("上传成功");
}
})
或者:
const fs = require('fs');
fs.writeFile('./测试.txt','这是我新加进去的数据',function(err){
if(err == null){
console.log("上传成功");
}else{
console.log("读取失败" + err);
}
})
这样我们就实现了内容的上传
五.案例——整理用户信息
首先,我们需要一份初始文件
我们将会读取这个文件,并且改变其中的某些字符串,然后将新整理好的数据写入到新文件中:
//fs模块
const fs = require('fs')
//读取文件
fs.readFile('./原始文件.txt','utf8',function(err,data){
if(err){
console.log("获取失败,可能是因为文件格式错误,请检查并重新获取文档" + err.message)
}else{
//空格分隔开的为一个用户的信息
const users = data.split(' ')
//遍历数组,替换字符
const usernew = []
for(let k of users){
usernew.push(k.replace(/=/g,':'))
}
const Str = usernew.join('\r\n')
console.log(Str)
//写入文件
fs.writeFile('./数据整理.txt',Str,function(err){
if(err){
console.log("提交失败,可能是因为系统故障,请检查")
}else{
console.log("提交成功")
}
})
}
})
我们在node中执行JS文件:
显示提交成功,我们打开整理好的文件看一下有没有导入进去:
成功导入