我最近一直在做一个项目,基本上我需要检查文本文件中的新文本。我的代码是这样的:
const fs = require('fs');
fs.watch('./file.txt', (event, filename) => {
fs.readFile('./file.txt', (err, data) => {
if (err) throw err;
data = JSON.parse(data);
console.log(data);
}
}
效果很好。但是,有时,无论出于何种原因,我都必须删除此文件,因此我的代码也会崩溃!
关于如何处理此问题的任何想法?谢谢您的回答
Node的内置模块fs
不能很好地支持文件删除检测。有一种解决方法是使用名为nsfw的程序包,该程序包是本机库的包装,可为删除检测提供更好的支持。该API有点奇怪,但它还是一个可靠的软件包。
这是您尝试使用nsfw进行操作的示例。
const nsfw = require("nsfw");
const path = require("path");
const fs = require("fs");
const file = path.join(__dirname, "file.txt");
let watcher;
nsfw(
file,
([event, ...restEvents]) => {
switch (event.action) {
case nsfw.actions.DELETED: {
watcher.stop();
return; // or handle this however you need to..
}
default: {
fs.readFile(file, (err, data) => {
if (err) throw err;
try {
data = JSON.parse(data);
console.log(data);
} catch (error) {
console.error(error)
}
});
}
}
}
)
.then((w) => {
watcher = w;
watcher.start()
});