1. 基本概念
fs(file system)模块是nodejs提供的用于访问本地文件系统的功能模块,它使得运行于nodejs环境下的JavaScript具备直接读写本地文件的能力。
fs模块是nodejs的核心模块之一,只要安装了nodejs,就可以直接使用,不需要单独安装。引入fs模块非常简单:
fs 模块可以实现与硬盘的交互
例如文件的创建、删除、重命名、移动还有文件内容的写入、读取
以及文件夹的相关操作
写入数据:
第一步导入fs模块
// require全局函数,可以导入模块,()中是模块的,名称
const fs = require('fs');
同步与异步
异步写入
// require全局函数,可以导入模块,()中是模块的,名称
const fs = require('fs');
// 写入文件 参数:1.文件名 2.要写入的数据 3.选项设置(可写可不) 4.写入回调
fs.writeFile('./座右铭.txt','好好学习',err=> { //文件如果不存在他会自动帮我们创建
// 当写入完成之后就会自动调用函数,在出现错误时也会传给函数err,
//如果写入失败则 err为错误对象。成功则err:null
if(err){
console.log('写入失败');
return;
}
console.log('写入成功');
});
异步的意思就是,主程序会一直往下走,而不会等待。比如这里在下面添加了一个1+1,写入结束之后则会先输出2,再去运行err回调函数,然后判断是否写入成功。
// require全局函数,可以导入模块,()中是模块的,名称
const fs = require('fs');
// 写入文件 参数:1.文件名 2.要写入的数据 3.选项设置(可写可不) 4.写入回调
fs.writeFile('./座右铭.txt','好好学习',err=> { //文件如果不存在他会自动帮我们创建
// 当写入完成之后就会自动调用函数,在出现错误时也会传给函数err,
//如果写入失败则 err为错误对象。成功则err:null
if(err){
console.log('写入失败');
return;
}
console.log('写入成功');
});
console.log(1+1);
同步写入
const fs = require('fs');
fs.writeFileSync('./data.text','test');
异步效率会高一些,需求比较性能要求高时使用。(用的比较多)。
但是对性能要求低的就可以用同步,更好理解一些。
文件追加写入
异步
// 引入fs
const fs = require('fs');
fs.appendFileSync('./座右铭.txt,'111')
// \r\n 可实现添加内容换行
fs.appendFileSync('./座右铭.txt','\r\n222');
writeFile 实现追加写入
// writeFile实现追加 参数{flag: a}会实现appendFile一样的效果
fs.writeFile('./座右铭.txt','love love love',{flag: a},err =>{
if(err){
console.log*('写入失败了');
return;
}
console.log('写入成功');
});
追加适应于:需要随时写入数据,比如日志,记录用户访问时间和数据时。
文件流式写入
//导入fs
const fs = require('fs');
// 创建写入流对象 参数路径
const ws = fs.createWriteStream('./观书有感.text');
//write
ws.write('111');
ws.write('222');
// 关闭通道 当脚本执行完毕之后,资源也会被回收,通道也会被关闭。所以写不写都可以
ws.close();
流式写入有时候会为了效率,会一直不关闭通道
而writeFile , writeFileSync,
appendFile,appendFileSync
writeFileSync, 都是一次性的
createWriteStream 可一直保持开启状态