Node.js 同步/异步文件读写
在 Node.js 中,操作文件系统是很常见的任务。Node.js 提供了 fs
核心模块来实现文件系统操作。 fs
模块同时支持同步和异步方法。
fs 同步方法
在 fs
同步操作中,当一个文件操作请求执行时,程序会等待它执行完成后再往下执行。
以下是一些常见的 fs
同步方法:
fs.readFileSync()
: 读取文件内容fs.writeFileSync()
: 写入文件内容fs.appendFileSync()
: 追加文件内容fs.statSync()
: 获取文件状态信息fs.mkdirSync()
: 创建目录fs.renameSync()
: 重命名文件或目录fs.unlinkSync()
: 删除文件或目录
以下是一个使用 fs.readFileSync()
读取文件内容的示例:
const fs = require('fs');
// 同步读取文件内容
const content = fs.readFileSync('file.txt', 'utf-8');
console.log(content);
fs 异步方法
在 fs
异步操作中,当一个文件操作请求执行时,程序会继续往下执行,不会等待操作完成,而是通过回调函数来处理完成后的结果。
以下是一些常见的 fs
异步方法:
fs.readFile()
: 异步读取文件内容fs.writeFile()
: 异步写入文件内容fs.appendFile()
: 异步追加文件内容fs.stat()
: 异步获取文件状态信息fs.mkdir()
: 异步创建目录fs.rename()
: 异步重命名文件或目录fs.unlink()
: 异步删除文件或目录
以下是一个使用 fs.readFile()
异步读取文件内容的示例:
const fs = require('fs');
// 异步读取文件内容
fs.readFile('file.txt', 'utf-8', (err, data) => {
if (err) {
throw err;
}
console.log(data);
});
文件流操作
fs
模块还支持文件流操作,这种操作方式比较适用于大型文件的读写,因为文件流操作是一块块地读取或写入文件内容,而不是一次性加载到内存中。这样可以避免占用过多的内存资源。
以下是一个使用 fs.createReadStream()
和 fs.createWriteStream()
读写文件流的示例:
const fs = require('fs');
// 创建读取文件流
const readStream = fs.createReadStream('file.txt', 'utf-8');
// 创建写入文件流
const writeStream = fs.createWriteStream('test.txt', 'utf-8');
// 监听读取文件流的 data 事件
readStream.on('data', (chunk) => {
console.log(`读取到 ${chunk.length} 个字节的数据`);
writeStream.write(chunk);
});
// 监听读取文件流的 end 事件
readStream.on('end', () => {
console.log('读取文件流结束');
writeStream.end();
});
// 监听写入文件流的 finish 事件
writeStream.on('finish', () => {
console.log('写入文件流结束');
});
以上示例中,我们先创建了一个读取文件流并监听其 data
事件,在事件回调函数中将读取到的内容写入一个写入文件流。当读取文件流结束时,我们结束写入文件流,并监听其 finish
事件,在事件回调函数中输出写入文件流结束的消息。
除了以上示例,还有很多文件流操作的应用场景,比如发送文件数据到客户端、从网络 API 中获取文件数据等。
总结
本文介绍了 Node.js 中 fs
模块 同步/异步文件读写、文件流操作的基本用法。了解和掌握这些操作,可以让我们在 Node.js 中高效地处理文件系统操作,提高开发效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:node.js同步/异步文件读写-fs,Stream文件流操作实例详解 - Python技术站