在 fs 中使用 Promise API 时,首先我必须打开文件描述符,然后才能访问我需要的方法,在我的例子中是 createReadStream
const fileHandle = await fs.open(filePath, 'r')
const readableStream = fileHandle.createReadStream(opt)
我怎样才能通过promise正确使用这个方法呢?最重要的是,如何正确且优雅地关闭文件描述符,因为当将await fileHandle?.close() 行插入finally 块时,文件没有时间被读取并立即关闭,这就是我尝试的方法。
const fs = require("fs/promises");
async function foo() {
const fileHandle = await fs.open("text.txt", "r");
const readableStream = fileHandle.createReadStream();
try {
return new Promise((resolve, reject) => {
let data = "";
readableStream .on("data", (chunk) => {
data += chunk;
});
readableStream .on("end", () => {
resolve(data);
});
readableStream .on("end", reject);
});
} catch (err) {
console.log(err);
} finally {
await fileHandle?.close();
}
}
foo().then((data) => console.log(data));