Node.js 读取写入文件、目录详解:同步异步多文件读写轻松搞定
2024-02-17 04:41:29
Node.js 文件操作简介
Node.js 提供了强大的文件系统 API,允许您轻松地读写文件和目录。这些 API 基于 POSIX 标准,因此您可以在大多数类 Unix 系统上使用它们。
Node.js 中的文件操作主要分为两类:同步操作和异步操作。同步操作会阻塞当前线程,直到操作完成。异步操作不会阻塞线程,而是将操作交给系统内核执行,并在操作完成后通知应用程序。
同步文件操作
同步文件操作使用 fs
模块中的同步方法。这些方法以 Sync
结尾,例如 readFileSync()
和 writeFileSync()
。同步方法的优点是简单易用,但缺点是可能会阻塞线程,影响程序的性能。
同步读取文件
const fs = require('fs');
const data = fs.readFileSync('file.txt', 'utf8');
console.log(data);
这段代码使用 readFileSync()
方法同步读取文件 file.txt
的内容,并将结果存储在变量 data
中。
同步写入文件
const fs = require('fs');
fs.writeFileSync('file.txt', 'Hello, world!', 'utf8');
console.log('File written successfully.');
这段代码使用 writeFileSync()
方法同步写入文件 file.txt
。如果文件不存在,它将被创建。
异步文件操作
异步文件操作使用 fs
模块中的异步方法。这些方法以 Async
结尾,例如 readFileAsync()
和 writeFileAsync()
。异步方法不会阻塞线程,而是将操作交给系统内核执行,并在操作完成后通知应用程序。
异步读取文件
const fs = require('fs');
fs.readFile('file.txt', 'utf8', (err, data) => {
if (err) {
console.error(err);
} else {
console.log(data);
}
});
这段代码使用 readFileAsync()
方法异步读取文件 file.txt
的内容。当操作完成时,回调函数 (err, data)
将被调用。如果操作成功,err
为 null
,data
为文件的内容。如果操作失败,err
为错误对象,data
为 undefined
。
异步写入文件
const fs = require('fs');
fs.writeFile('file.txt', 'Hello, world!', 'utf8', (err) => {
if (err) {
console.error(err);
} else {
console.log('File written successfully.');
}
});
这段代码使用 writeFileAsync()
方法异步写入文件 file.txt
。当操作完成时,回调函数 (err)
将被调用。如果操作成功,err
为 null
。如果操作失败,err
为错误对象。
目录操作
Node.js 也提供了对目录的读写支持。这些操作主要集中在 fs
模块中。
读取目录
const fs = require('fs');
fs.readdir('directory', (err, files) => {
if (err) {
console.error(err);
} else {
console.log(files);
}
});
这段代码使用 readdir()
方法读取目录 directory
中的文件列表。当操作完成时,回调函数 (err, files)
将被调用。如果操作成功,err
为 null
,files
为目录中文件的数组。如果操作失败,err
为错误对象,files
为 undefined
。
创建目录
const fs = require('fs');
fs.mkdir('directory', (err) => {
if (err) {
console.error(err);
} else {
console.log('Directory created successfully.');
}
});
这段代码使用 mkdir()
方法创建目录 directory
。当操作完成时,回调函数 (err)
将被调用。如果操作成功,err
为 null
。如果操作失败,err
为错误对象。
总结
本文详细介绍了 Node.js 中的文件和目录的读取和写入操作,包括同步和异步的方式。通过对不同场景的分析,您将学习如何根据需求选择合适的文件操作方法,并轻松完成读写任务。无论您是 Node.js 初学者还是经验丰富的开发者,本文都将为您提供有价值的知识。