fs模块

ppgo8 于 2023-05-17 发布

fs模块

file system(文件系统),简称fs,可以实现与硬盘的数据交互。

本章会介绍以下几个操作:

在实现上述功能时,需要首先调用fs模块

const fs = require('fs')

文件写出

writeFile/writeFileSync方法

1.writeFile异步模型

writeFile方法就是异步的,主线程不会等待输入任务执行结束,会先运行后面的代码。


异步输出执行过程

2.writeFileSync同步模型

​ 主线程遇到writeFileSync输出任务时,等待IO任务完成,才会执行其他工作。


注意

追加写

1.appendFile异步追加写

2.appendFileSync同步追加写

3.writeFile实现追加写


注意

createWriteStream流式写

文件读取

文件读取,就是程序从文件中取出数据,可以使用以下几种方法

readFile/readFileSync方法

1.readFile

异步读取方法。

// 导入 fs 模块
const fs = require('fs');
// 读取数据
fs.readFile('./座右铭.txt', (err, data) => {
	if(err) throw err;
	console.log(data);
})

// 读取数据,指定为utf-8编码
fs.readFile('./座右铭.txt', 'utf-8',(err, data) => {
	if(err) throw err;
	console.log(data);
});

2.readFileSync

同步读取方法。

let data = fs.readFileSync('./座右铭.txt');
let data2 = fs.readFileSync('./座右铭.txt', 'utf-8');

流式读取

// 创建读取流对象
let rs = fs.createReadStream('./观书有感.txt');
// 每次取出 64k 数据后执行一次 data 回调
rs.on('data', data => {
	console.log(data);
	console.log(data.length);
});
// 读取完毕后, 执行 end 回调
rs.on('end', () => {
	console.log('读取完成')
})
    
// data 读取完每一个块
// end  读取完成

文件移动与重命名

在 Node.js 中,可以使用 rename renameSync 来移动或重命名文件或文件夹。

文件删除

在 Node.js 中,使用 unlinkunlinkSync 来删除文件

文件夹操作

mkdir创建文件夹

在 Node.js 中,可以使用 mkdir mkdirSync 来创建文件夹

readdir读取文件夹

在 Node.js 中,我们可以使用 readdir readdirSync 来读取文件夹

rmdir删除文件夹

在 Node.js 中,可以使用 rmdir rmdirSync 来删除文件夹

建议使用rm删除文件夹

查看资源状态

在Node.js中,可以使用statstatSync查看资源的详细信息。

//异步获取状态
fs.stat('./data.txt', (err, data) => {
	if(err) throw err;
	console.log(data);
})
//同步获取状态
let data = fs.statSync('./data.txt');

结果值对象结构: size 文件体积 birthtime 创建时间 mtime 最后修改时间 isFile 检测是否为文件 isDirectory 检测是否为文件夹

相对路径的问题

fs模块对资源进行操作时,路径的写法有两种:

__dirname

let data = fs.readFileSync(__dirname + '/data.txt'); // 要拼接成绝对路径,所以前面写的是/。因为要保证拼接后的路径符合规范直接被识别。
console.log(data);

使用fs模块,尽量使用__dirname将路径转换为绝对路径,这样可以避免相对路径产生的bug