fs ( File System ) 文件系统
在node中我们可以通过fs模块来和系统中的文件进行交互
通过fs模块可以对磁盘中的文件做各种增删改查的操作
下面我就为大家先介绍一下关于fs的同步,异步,流三种方式的写和读的操作。
当我们在进行操作之前一定要注意讲fs模块引入
let fs = require("fs");
1.同步写入:
三个参数中,第一个参数为需要写入信息的文件地址,第二个参数为写入的信息,第三个参数是讲我们的信息改为utf-8的格式。
// 同步(覆盖式写入)
fs.writeFileSync("./1.txt","world","utf-8");
通过这样的写入我们可以在文件中获得我们写入的信息
2.异步写入:
// 异步,如果错误那么回调输出报错
fs.writeFile("./1.txt","hello","utf-8",(err)=>{
console.log(err);
})
在异步写入方式中,我们多出一个参数为一个回调函数,err: 错误信息,如果操作过程中出现了错误,则该对象存在,如果没有出现错误,则该参数的值为null,错误优先
此时我们再看一下我们的txt文件。
我们发现我们刚刚同步方式写入的world已经被这次写入的hello给覆盖掉了。对的我们的fs.writeFile和fs.writeFileSync属于是覆盖式写入,那我们如果不想覆盖改怎么解决呢。
我们这时,可以通过fs.appendFileSync的方式来写入文件,
// 不覆盖,后面继续写入
fs.appendFileSync("./1.txt","您好","utf-8");
此时我们再来检查一下txt文件
此时我们可以发现我们的hello并没有覆盖,达成了我们想要的效果了。
3.流方式写入
let wf = fs.createWriteStream("./1.txt");
wf.write("6666666","utf-8");
我们先用fs.createWriteStream创建出来了一个流通道,再通过write方式来将我们的信息进行写入。
接下来再来介绍一下我们的读出
1.同步读出
// 同步读出
var read = fs.readFileSync("./1.txt","utf-8");
console.log(read);
再来看一下我们的结果
2.异步读出
//异步读出
fs.readFile("./1.txt","utf-8",(err,data)=>{
if(!err){
console.log(data);
}
})
与异步写入很相似,我们多出一个回调函数,优先错误,如果不出现错误情况的话,就可以读出我们的数据。
3.流方式读出
//流方式读出
var rf = fs.createReadStream("./1.txt");
var body = "";
rf.on("data",(thunk)=>{
console.log(thunk);
body += thunk;
})
rf.on("end",()=>{
console.log(body);
})
我们先通过定义一个空字符串,通过on的方法来监听,把每次读出的加到body里,通过“end”的事件,当读出结束后,输出读出的文件。
这样也就完成了我们的流方式读出文件。