收录了这篇文章
一,获取文件信息
每个文件都有一组文件信息,我们可以使用 fs 模块提供的 stat() 方法获取这组信息。
获得文件详细信息后,它将调用你传递的回调函数,有两个参数:错误消息和文件统计信息:
const fs = require('node:fs');
fs.stat('/Users/joe/test.txt', (err, stats) => {
if (err) {
console.error(err);
return;
}
stats.isFile(); // true
stats.isDirectory(); // false
stats.isSymbolicLink(); // false
stats.size; // 1024000 //= 1MB
});
同步方法,Node.js还提供了一个sync方法,该方法会阻塞线程,直到文件数据准备就绪:
const fs = require('node:fs');
try {
const stats = fs.statSync('/Users/joe/test.txt');
stats.isFile(); // true
stats.isDirectory(); // false
stats.isSymbolicLink(); // false
stats.size; // 1024000 //= 1MB
} catch (err) {
console.error(err);
}
Promise API
Node.js 的 fs 模块从版本 10 开始引入了基于 Promise 的 API,这使得使用 async/await 风格编写文件系统操作代码变得更加简洁和易于阅读。
以下是一些常用的 fs.promises 方法示例,配合 async/await 使用:
const fs = require('node:fs/promises');
async function example() {
try {
const stats = await fs.stat('/Users/joe/test.txt');
stats.isFile(); // true
stats.isDirectory(); // false
stats.isSymbolicLink(); // false
stats.size; // 1024000 //= 1MB
} catch (err) {
console.log(err);
}
}
example();
二,读取文件
const fs = require('node:fs/promises');
async function readFileAsync(filePath) {
try {
const data = await fs.readFile(filePath, 'utf8');
console.log(data);
} catch (err) {
console.error(`读取文件时发生错误: ${err}`);
}
}
readFileAsync('./example.txt');
三,写入文件
const fs = require('node:fs/promises');
async function writeFileAsync(filePath, content) {
try {
await fs.writeFile(filePath, content, 'utf8');
console.log('文件写入成功');
} catch (err) {
console.error(`写入文件时发生错误: ${err}`);
}
}
writeFileAsync('./example.txt', 'Hello, Node.js with Promises!');
四,创建目录
const fs = require('node:fs/promises');
async function mkdirAsync(dirPath) {
try {
await fs.mkdir(dirPath, { recursive: true }); // recursive 选项允许创建多级目录
console.log('目录创建成功');
} catch (err) {
console.error(`创建目录时发生错误: ${err}`);
}
}
mkdirAsync('./newDir');
五,删除文件
const fs = require('node:fs/promises');
async function unlinkAsync(filePath) {
try {
await fs.unlink(filePath);
console.log('文件删除成功');
} catch (err) {
console.error(`删除文件时发生错误: ${err}`);
}
}
unlinkAsync('./example.txt');
通过上述示例可以看出,使用 fs.promises 结合 async/await 不仅使代码更加清晰,也提高了错误处理的一致性和代码的可维护性。
修改时间 2024-11-05
声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。