- 在 Node 中,与文件系统的交互是非常重要的,服务器的本质就将本地的文件发送给远程的客户端。
- Node 通过 fs 模块来和文件系统进行交互。
- 该模块提供了一些标准文件访问 API 来打开、 读取、写入文件,以及与其交互。
- 要使用 fs 模块,首先需要对其进行加载。
const fs = require(“fs”); // 加载fs文件系统模块
同步和异步调用
- fs 模块中所有的操作都有两种形式可供选择同步和异步。
- 同步文件系统会阻塞程序的执行,也就是除非操作完毕,否则不会向下执行代码。
- 异步文件系统不会阻塞程序的执行,而是在操作完成时,通过回调函数将结果返回。
打开和关闭文件
- 打开文件
fs.open(path, flags[, mode], callback)
fs.openSync(path, flags[, mode])
- 关闭文件
fs.close(fd, callback)
fs.closeSync(fd)
读取文件
同步文件读取
fs.readSync(fd, buffer, offset, length, position)
- fd:文件描述符
- buffer:读取文件的缓冲区
- offset:buffer 的开始写入的位置
- length:要读取的字节数
- position:开始读取文件的位置
异步文件读取
fs.read(fd, buffer, offset, length, position, callback)
- callback:回调函数,参数 err , bytesRead , buffer
写入文件
同步文件写入
fs.openSync(path,flags[,mode])
- path:要打开的文件路径
- flags:打开文件要做的操作的类型
- mode:设置文件的操作权限,一般不传
- 返回值:该方法会返回一个文件的描述符作为结果,我们可以通过该描述符来对文件进行各种操作
fs.writeSync(fd,string[,position[,encoding]])
- fd:文件的描述符,需要传递要写入的文件的描述符
- string:要写入的内容
- position:写入的起始位置
- encoding:写入的编码,默认为utf-8,一般也不传
fs.closeSync(fd)
- fd:要关闭的文件的描述符
// 同步文件写入
var fs = require('fs');
var fd = fs.openSync('hello.txt','w');
// r 只读
// w 只写
fs.writeSync(fd,'Hello JavaScript');
fs.closeSync(fd);
要完成同步写入文件,先需要通过 openSync() 打开文件来获取一个文件描述符,然后在通过 writeSync() 写入文件。
异步文件写入
fs.open(path,flags[,mode],callback)
- 用来打开一个文件
- 异步调用的方法,结果都是通过回调函数返回的
- 回调函数需要两个参数:err 错误对象,如果没有错误,则为null,fd 文件的描述符
fs.write(fd,string[,position[,encoding]],callback)
- 用来异步写入一个文件
fs.close(fd,callback)
- 用来关闭文件
// 异步文件写入
var fs = require('fs');
// 打开文件
fs.open('hello2.txt','w',function (err,fd) {
// 判断是否出错
if (!err){
// 如何没有出错,则对文件执行写入操作
fs.write(fd,'这是异步写入的内容',function (err) {
if (!err){
console.log('写入成功~~~');
}
fs.close(fd,function (err) {
if (!err){
console.log('文件已关闭~~~')
}
});
});
}else{
console.log(err);
}
})
要使用异步写入文件,先需要通过 open() 打开文件,然后在回调函数中通过 write() 写入。